2013-03-12 61 views
2

我是jQuery mobile的新手,並且正在嘗試使用jQuery mobile構建PhoneGap應用程序。防止在jquery mobile中遠離對話框導航

我有點卡住了以下問題。

我有一個登錄對話框作爲表單,我想向用戶顯示他們是否需要登錄。我不希望他們能夠從這個登錄表單離開,直到他們登錄。已經刪除了對話框中的所有鏈接,但硬件後退按鈕仍然有效。

我已經試過如下:

複製代碼

function onDocumentReady() { 
    document.addEventListener("deviceready", onDeviceReady, true); 

    $("#loginDialog").on("pagebeforehide", 
     function(event) { 
      event.preventDefault(); 
      console.info('in pagebeforehide'); 
     } 

    ); 
} 

這不,雖然工作。代碼被調用(我添加了一個斷點),但對event.preventDefault()的調用並沒有停止離開頁面的導航。

在此先感謝您的幫助。

回答

3

正如我在很多答案的PhoneGap和Android已經告訴後退按鈕弄亂了非常多。

您可以禁用Android的後退按鈕,如下

$(function(){ 
    document.addEventListener("deviceready", onDeviceReady, false); 
}) 

// PhoneGap is loaded and it is now safe to call PhoneGap methods 
function onDeviceReady() { 
    // Register the event listener 
    document.addEventListener("backbutton", onBackKeyDown, false); 
} 

// Handle the back button 
function onBackKeyDown() { 
    console.log("back button not fired"); 
} 
+0

這工作(這是令人印象深刻的),但我寧願找到一種解決方案,實際上並沒有禁用因爲用戶可能仍然希望在其他場景中使用後退按鈕。我試圖只在登錄頁面時禁用後退按鈕,並在轉到其他頁面時重新啓用後退按鈕,但這並不一致,這很奇怪。我會提高你的答案,因爲它是一個解決方案,但不是理想的答案。謝謝你的幫助。 – 2013-03-13 11:31:51

+0

找出我做錯了什麼,現在可以一直這樣做。接受你的答案,因爲它是幫助我的答案,但會編輯它以包含完整的答案。再次感謝! – 2013-03-13 11:45:41

+0

太好了。很高興它幫助你。 – 2013-03-13 11:51:10

0

preventDefault將阻止默認的動作說錨定標記。如果您希望禁用後退按鈕嘗試這個辦法:

<SCRIPT type="text/javascript"> 
    window.history.forward(); 
    function noBack() { window.history.forward(); } 
</SCRIPT> 
</HEAD> 
<BODY onload="noBack();" 
    onpageshow="if (event.persisted) noBack();" onunload=""> 
+0

這沒有奏效。不知道我是否在正確的位置添加了代碼。我添加了window.history.forward()語句來代替我的代碼中的event.preventDefault(我正在使用SPA) – 2013-03-13 11:11:14