私は単純なように思っています:divがクリックされたりタッチされている間にdivを緑に変えてください。 (つまり、本質的に、任意の秒数の間押されることができるボタン)である。複数のプラットフォームでHTMLボタンのリリースを確実に検出する
私はほとんどが、それはこのフィドルで働いています https://jsfiddle.net/lrodgi/66gramjh/
私は(これはほとんど作品を)やって何が、リリースのためのmouseupとtouchendイベントをリッスンするだけです:
jbtn.on('mousedown touchstart', function(event) {
onPressed();
});
$(document).on('mouseup touchend', function() {
onReleased();
});
これはコンピュータでうまくいきますが、モバイルブラウザではしばらくの間保持されたコンテキストメニューが表示されなくなります。そこで、私が通過表示されているメニューを防ぐ:これらで
function onContextMenu(event) {
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
return false;
}
jbtn.on('contextmenu', onContextMenu);
を、すべてのデスクトップブラウザで、モバイルChromeで正常に動作するようです。しかし、それでもFirefox Mobileでは正常に動作しません。
Firefoxモバイルでは、divを数秒間押し続けてもメニューは表示されませんが、「touchcancel」イベントが発生します。トゥーチェンドやマウスアップではありません。したがってdivは決して解放されません。
これは完全に機能すると思いますか?
私はjavascriptライブラリを使用しても構いません。実際、jQuery Mobileのvmouseupとvmousedownイベントは成功しませんでした(数秒後にtouchcancelが発生すると、vmouseupが発生しなくなります)。
何らかの理由で、モバイルFirefox(少なくともGalaxy S6 Edge)でも正しく動作していないようです。正方形を長くタップすると、タップを放しても赤いままになります。 – Duther