0
私は、ページ上のすべてをパンすることができるサイトを作成するためにパンズームプラグインを使用しています。このページには外部のウェブサイトへのリンクがあります。デスクトップブラウザで実行すると、すべて動作します(つまり、パンしてリンクをクリックできるようになります)。しかし、私がモバイル機器を使用しているときには、そこにリンクがないような気がします。私はそれをクリックすることはできません。私はPanzoom内の関連するコードがあると思う:モバイルでリンクが機能しない(Panzoom JSプラグインを使用)
_startMove: function(event, touches) {
if (this.panning) {
return;
}
var moveEvent, endEvent,
startDistance, startScale, startMiddle,
startPageX, startPageY, touch;
var self = this;
var options = this.options;
var ns = options.eventNamespace;
var matrix = this.getMatrix();
var original = matrix.slice(0);
var origPageX = +original[4];
var origPageY = +original[5];
var panOptions = { matrix: matrix, animate: 'skip' };
var type = event.type;
// Use proper events
if (type === 'pointerdown') {
moveEvent = 'pointermove';
endEvent = 'pointerup';
} else if (type === 'touchstart') {
moveEvent = 'touchmove';
endEvent = 'touchend';
} else if (type === 'MSPointerDown') {
moveEvent = 'MSPointerMove';
endEvent = 'MSPointerUp';
} else {
moveEvent = 'mousemove';
endEvent = 'mouseup';
}
// Add namespace
moveEvent += ns;
endEvent += ns;
// Remove any transitions happening
this.transition(true);
// Indicate that we are currently panning
this.panning = true;
// Trigger start event
this._trigger('start', event, touches);
var setStart = function(event, touches) {
if (touches) {
if (touches.length === 2) {
if (startDistance != null) {
return;
}
startDistance = self._getDistance(touches);
startScale = +matrix[0];
startMiddle = self._getMiddle(touches);
return;
}
if (startPageX != null) {
return;
}
if ((touch = touches[0])) {
startPageX = touch.pageX;
startPageY = touch.pageY;
}
}
if (startPageX != null) {
return;
}
startPageX = event.pageX;
startPageY = event.pageY;
};
setStart(event, touches);
var move = function(e) {
var coords;
e.preventDefault();
touches = e.touches || e.originalEvent.touches;
setStart(e, touches);
if (touches) {
if (touches.length === 2) {
// Calculate move on middle point
var middle = self._getMiddle(touches);
var diff = self._getDistance(touches) - startDistance;
// Set zoom
self.zoom(diff * (options.increment/100) + startScale, {
focal: middle,
matrix: matrix,
animate: 'skip'
});
// Set pan
self.pan(
+matrix[4] + middle.clientX - startMiddle.clientX,
+matrix[5] + middle.clientY - startMiddle.clientY,
panOptions
);
startMiddle = middle;
return;
}
coords = touches[0] || { pageX: 0, pageY: 0 };
}
if (!coords) {
coords = e;
}
self.pan(
origPageX + coords.pageX - startPageX,
origPageY + coords.pageY - startPageY,
panOptions
);
};
リンクがあるパン機能を無効にする方法はありますか?私はリンクをクリック可能にしたいだけで、パンイベントはトリガーしません。私は起こっていることは、タッチイベントがモバイル上で(リンクの上にあっても)始めるといつでも、それがパンをトリガーするということです。
おかげで、 ギャレット
Panzoomのドキュメントによれば、要素にPanzoomを無効にするには、次を使用して書かれています: $ elem.panzoom( "無効")を、 しかし、リンクにのみこれを追加する方法がわかりません。誰かが本当に素早く私を助けることができますか? – Garrett
これで、リンク上でPanzoomを無効にすることができました: var $ links = $ section.find( 'a')。panzoom(); $ links.panzoom( '。panzoom'、options、{disablePan:true}); リンクをクリックしたときにパンが外れることはなくなりましたが、リンクはモバイルのどこにも移動しません。それは私もそれらをクリックしていないようです... – Garrett