iOSで CarouFredSel を使った場合、タッチしての遷移がいつのまにかできなくなっていたので
CarouFredSel を使っているが、iOS でページを表示した時、タップ動作でリンク遷移ができなくなっていた。 (スワイプでカルーセルを回せる設定をしてある)
なので、エレメントの各要素をタップした際
というような改修をしようと思っていた。
var clickX = null;
var clickY = null;
$('a.touch-link-direct, .touch-link-direct a').each(function () {
var element = $(this);
if (element.attr('href')) {
element.on("touchstart", function (event) {
clickX = event.pageX;
clickY = event.pageY;
});
こんな感じで。
しかし、iOSシミュレータでこのコードを実行してみると、 event.pageX が undefined になる。clientX なんかも同様。 タッチしてると別のプロパティ名になるんだろうか?
よくわからなかったので、touchstart - tauchend の時間差で、 遷移するようにした。
var touchStartTime = null;
$('a.touch-link-direct, .touch-link-direct a').each(function () {
var element = $(this);
if (element.attr('href')) {
element.on("touchstart", function (event) {
touchStartTime = new Date().getTime();
});
element.on("touchend", function () {
if (!touchStartTime) {
return;
}
var touchEndTime = new Date().getTime();
var touchElapsedTime = touchEndTime - touchStartTime;
touchStartTime = null;
if (10 < touchElapsedTime && touchElapsedTime < 200)
location.href = element.attr('href');
return false;
});
}
});
iOS だったら、CarouFredSel より FilpSnap.js の方がよさそう