PhoneGapとjQMを使用してiPhoneとiPad用のアプリを作成しています
<div class="ui-block-a">
<a id="btnLink" href="#pageID" data-role="button"></a>
</div>
正常に機能しますが、デバイスで実行して(シミュレーターを試していない)、長押しすると、通常のブラウザーでリンクのデフォルトのiPhoneメニューが表示され、リンクを開いたりコピーしたりできます。
アプリでこのデフォルト機能を無効にするにはどうすればよいですか?
私はこれらを試しましたが成功しませんでした:
$("a").click(function(event) {
event.preventDefault(); // long press menu still apear
});
$("a").bind('click',function(event) {
console.log(['preventingclick',event.type]);
event.preventDefault(); // long press menu still apear
});
'taphold'でバインドすると、長押ししてもメニューが表示されますが、キャンセルをクリックすると、コンソールログが表示されます:["長押しの防止"、 "taphold"]
$("a").bind('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault(); // long press menu still apear
});
次のように「taphold」イベントでデリゲートを使用する場合:
$("a").delegate('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault();
});
問題は修正されますが、イベントを添付できなくなったため、その後はどのボタンも機能しなくなります。
$('#btnLink').bind("click", function() {
$.mobile.changePage('mypage', 'slide'); // won't fire any more because of the delegate before
});
デリゲートが現在および将来のすべての要素に適用されることを私は知っていますが、私は答えに近づいていると思いますが、まだです。
前もって感謝します