ホームページ >ウェブフロントエンド >jsチュートリアル >スライド式タッチスクリーンイベントモニタリングを実装するjsメソッド_javascriptスキル
この記事の例では、スライディング タッチ スクリーン イベント監視を js で実装する方法を説明します。皆さんの参考に共有してください。具体的な実装方法は以下の通りです。
function span_move_fun(){ var span = document.getElementById("move_k"); var span_left = $(span).offset().left; var span_top = $(span).offset().top; var start_left = $(span).offset().left; var start_top = $(span).offset().top; span.addEventListener('touchstart', function(event) { event.preventDefault(); if (event.targetTouches.length == 1) { var touch = event.targetTouches[0]; span.style.position = "absolute"; span_top = $(this).offset().top; span_left = $(this).offset().left; start_top = touch.pageY start_left = touch.pageX var left = parseFloat(touch.pageX - start_left + span_left-30); var top = parseFloat(touch.pageY - start_top + span_top-73); span.style.left = String(left) + 'px'; span.style.top = String(top) + 'px'; } }); span.addEventListener('touchmove', function(event) { event.preventDefault(); if (event.targetTouches.length == 1) { var touch = event.targetTouches[0]; span.style.position = "absolute"; var left = parseFloat(touch.pageX - start_left + span_left-30); var top = parseFloat(touch.pageY - start_top + span_top-73); span.style.left = String(left) + 'px'; span.style.top = String(top) + 'px'; } }); span.addEventListener('touchend', function(event) { var touch = event.changedTouches[0]; if(parseFloat(touch.pageX - start_left + span_left-30) <= -5 || parseFloat(touch.pageX - start_left + span_left-30) >= 620 || parseFloat(touch.pageY - start_top + span_top-73) <= -38 || parseFloat(touch.pageY - start_top + span_top-73) >= 587){ span.style.left = String(span_left-30) + 'px'; span.style.top = String(span_top-73) + 'px'; } event.stopPropagation(); }); }
JS の左右のスライド タッチ スクリーン イベントには、主に touchstart、touchmove、touchend の 3 つのイベントが含まれます。これら 3 つのイベントの最も重要な属性は、X 座標と Y 座標を表す pageX と pageY です。
touchstart はタッチ開始時にイベントをトリガーします
touchend はタッチが終了するとイベントをトリガーします
touchmove イベントはかなり奇妙です。論理的に言えば、このイベントはタッチ プロセス中に継続的に発生するはずですが、私の Android 1.5 では、touchstart が発生した後に 1 回発生し、残りはほぼ同時に発生します。タッチエンドとしての時間。
これら 3 つのイベントにはすべて timeStamp 属性があり、その順序は touchstart -> touchmove ->touchmove -> であることがわかります。
以下はコード例です:
document.getElementsByTagName_r('body')[0].addEventListener('touchstart',function(e){ nStartY = e.targetTouches[0].pageY; nStartX = e.targetTouches[0].pageX; }); document.getElementsByTagName_r('body')[0].addEventListener('touchend',function(e){ nChangY = e.changedTouches[0].pageY; nChangX = e.changedTouches[0].pageX; });
追記:
1. タッチイベントとクリックイベントは同時にトリガーされません。今日のモバイル デバイスはより優れており、この問題は完全に回避されています。
2. タッチの開始位置と終了位置のずれに注意してください。変位が小さすぎる場合は、何も実行する必要はありません。
この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。