2013-08-12 44 views

回答

2

// Deviceready功能時後退按鈕被按下

function ShowExitDialog() { 
     navigator.notification.confirm(
       ("Do you want to Exit?"), // message 
       alertexit, // callback 
       'My APp', // title 
       'YES,NO' // buttonName 
     ); 

    } 

//調用exit函數

function alertexit(button){ 

     if(button=="1" || button==1) 
     { 

      device.exitApp(); 
     } 

} 
7

試試這個

document.addEventListener('deviceready', function() { 

    document.addEventListener("backbutton", ShowExitDialog, false); 

}, false); 

//對話框:

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady() { 
    document.addEventListener("backbutton", onBackKeyDown, false); //Listen to the User clicking on the back button 
} 

function onBackKeyDown(e) { 
    e.preventDefault(); 
    navigator.notification.confirm("Are you sure you want to exit ?", onConfirm, "Confirmation", "Yes,No"); 
    // Prompt the user with the choice 
} 

function onConfirm(button) { 
    if(button==2){//If User selected No, then we just do nothing 
     return; 
    }else{ 
     navigator.app.exitApp();// Otherwise we quit the app. 
    } 
} 
1

不知道是否phonegap更改或什麼,但Suhas和geet的解決方案只有差不多爲我工作。 (但肯定給了我需要的東西,謝謝!)後退按鈕基本上被打破了。

這裏,使得它爲我工作的調整:

一旦程序被加載此操作:

 document.addEventListener("backbutton", onBackKeyDown, false);//hijack the backbutton 

     function onBackKeyDown(e){ 
      var page = $.mobile.activePage.attr('id'); 
      xStat.rec("back button clicked from page:" + page); 
      if (page == 'menuPage'){//are you on the 'root page' from which phonegap will exit? 
       e.preventDefault(); 
       $.mobile.changePage('#aboutToExitAppPage'); 
      } else { 
       window.history.back();//restore normal back button functionality 
      } 
     } 


//somewhere else in your code for the "aboutToExit app" page 
     $('#aboutToExitAppPage').on('pageinit', function(){ 
      $(this).find('#exitApp').on('click', function(){ 
       navigator.app.exitApp();//quit the app. 
      }); 
     }); 

和HTML

<div data-role="page" id="aboutToExitAppPage"> 
    <div data-role="header" id="" data-position="inline" data-backbtn="true" > 
     <h1 class=>About to exit app</h1> 
    </div> 
    <div data-role="content" style="width:100%; height:100%; padding:0;"> 
     <ul id="" data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b" data-role="fieldContain"> 
      <input id="exitApp" class="" type="button" value="Exit" data-theme=""> 
      <a href="#menuPage" data-role='button'>Main Menu</a> 
     </ul> 
    </div> 
</div> 
+0

你說的 「別的地方在你的代碼」 是什麼意思?不起作用。 – Zac

5

時要先點擊組ExitApp命令= true,所以第二次點擊後退將退出應用程序。 但設置了一個Interval將exitApp的狀態更改爲false。 所以當在1秒內點擊兩次後退按鈕時,將退出應用程序。

document.addEventListener('deviceready', function() { 
    var exitApp = false, intval = setInterval(function(){exitApp = false;}, 1000); 
    document.addEventListener("backbutton", function (e){ 
     e.preventDefault(); 
     if (exitApp) { 
      clearInterval(intval) 
      (navigator.app && navigator.app.exitApp()) || (device && device.exitApp()) 
     } 
     else { 
      exitApp = true 
      history.back(1); 
     } 
    }, false); 
}, false); 
+0

精心製作。值得注意的是,在此流程中,應用程序不會等待用戶第一次點擊後退按鈕1秒鐘,而是等待下一個時間間隔。也許最好先創建一個超時。 –

0

試試這個 //當設備準備

document.addEventListener('deviceready', function() { 
 

 
    document.addEventListener("clickBackbutton", ExitDialogPrompt, false); 
 

 
}, false); 
 

 
function ExitDialogPrompt() { 
 
     navigator.notification.confirm(
 
       ("Do you want to Exit?"), // message 
 
       prompt, // callback 
 
       'Your title', // title 
 
       'YES,NO' // button Name 
 
     ); 
 

 
    } 
 

 
function alertexit(button){ 
 

 
     if(button=="0" || button==1) 
 
     { 
 

 
      navigator.app.exitApp(); 
 
     } 
 

 
}