0

次のコードがあります。

function logout_now()

//Logout of the app after a long press onKey(Longer then 5 sec)    Not working correctly

{
var startTime; 
var endTime;
var TimeDiff;

document.getElementById('Exit_btn').addEventListener('touchstart',function(event)
        {startTime = new Date().getTime();
        },false);

document.getElementById('Exit_btn').addEventListener('touchend',function(event){
        endTime = new Date().getTime();
        TimeDiff = endTime-startTime;   

        if( endTime-startTime > 5000 )  //logout after more then 5 Second = 5000 mSec
            {
            logout();      
            }
        },true);     
 }

ユーザーが 5 秒待ってから Exit_btn を押すと (長押し)、次の機能が開始されます。

関数ログアウト() {

var password = prompt("Please enter the exit password");

if (password == "123")
     {
        alert("Goodbye");
        navigator.app.exitApp();
     }
else
     {
        alert("Wrong Password!");
        console.log("index.html");
     }

}

問題は、スムーズに動作しないことです。つまり、間違ったパスワードを入力すると、プロンプト ボックスがポップアップし続けたり、最終的にアプリを正常に終了したり、再起動したときにクラッシュしたりします。

誰でもここで問題を見ることができますか? なぜそれが起こるのですか?

どんな助けでも感謝します。

ありがとう。

4

1 に答える 1

1

以下のようにjQuery Mobileのタップホールドイベントを使用できます...これはあなたを助けるかもしれません...

HTML:

<div id="logout-btn">Logout</div>

jQuery モバイル:

$(function() {
   $( "#logout-btn" ).on('taphold', tapholdCallBack);
     // Callback function
     function tapholdCallBack(ev) {
        logout();
        .....
     }
});

また

$(document).delegate('div[data-role*="page"]', 'pageshow', function () {
  $(document).delegate('#logout-btn', 'taphold', function (ev) {
    logout();
  });
});

ログアウト ボタンを 750 ミリ秒間長押しすると、logout() が呼び出されます。

デフォルトのタップ時間は 750 ミリ秒です。値を割り当ててタップの時間を変更する場合to $.event.special.tap.tapholdThreshold。以下のように...

 $(document).bind("mobileinit", function () {
    $.event.special.tap.tapholdThreshold = 5000,
 });
于 2013-04-10T11:07:09.033 に答える