2012-10-09 30 views
12

我正在使用Phonegap開發Android應用程序,該應用程序與我的Drupal網站進行交互。我已經重新分配了Android的「返回」按鈕來提示用戶從Drupal服務器註銷,但是我只是希望它在登錄頁面上被禁用(出於顯而易見的原因)。我可以讓它工作,但只有在用戶註銷之後,一旦登錄頁面中的按鈕仍然被重新指定爲註銷按鈕。這裏是我到目前爲止的代碼:如何在一個頁面上禁用Android後退按鈕並將其更改爲每隔一頁上的退出按鈕

<head> 
     <script> 
     /* Wait until device is ready to re-assign Back button */ 
     document.addEventListener("deviceready", onDeviceReady, false); 
     function onDeviceReady() { 
      document.addEventListener("backbutton", onBackKeyPress, false); 
     } 
     function onBackKeyPress() { 
      /* If the current page is the login page, disable the button completely (aka do nothing) */ 
      if ($.mobile.activePage.attr('id') == 'login_page') { 
      } 

      /* Else, execute log off code */ 
      else { 
       if (confirm("Are you sure you want to logout?")) { 
        /* Here is where my AJAX code for logging off goes */ 
       } 
       else { 
        return false; 
       } 
      } 
     } 
     </script> 
</head> 

問題是後退按鈕沒有得到重新分配。我無法想出在用戶註銷並重新登錄登錄頁面時重新運行上述代碼的方法。

如果有人願意爲此提供解決方案,我將非常感激!

回答

4

試試這個:

document.addEventListener("backbutton", function(e){ 
    if($.mobile.activePage.is('#login_page')){ 
     e.preventDefault(); 
    } 
    else { 
     if (confirm("Are you sure you want to logout?")) { 
      /* Here is where my AJAX code for logging off goes */ 
     } 
     else { 
      return false; 
     } 
    } 
}, false); 
+0

在我的項目這樣做,似乎只有一次運行,所以它進入if語句,防止巴的默認執行ck按鈕和葉子,那麼後退按鈕在應用程序的任何頁面上都不起作用 –

19

deviceready是很重要的。如果不使用,有時可以阻止後退按鈕,有時不會。 通常在調試它的作品,在生產號。

document.addEventListener("deviceready", onDeviceReady, false); 
    function onDeviceReady() { 
     document.addEventListener("backbutton", function (e) { 
      e.preventDefault(); 
     }, false); 
} 

編輯2013年11月3日 常見錯誤是:發展是在桌面上進行,科爾多瓦腳本被排除在外。 然後忘記包含移動版本的cordova腳本。

+0

適用於我PhoneGap 2.7 – JamesRLamar

+0

感謝您的編輯。這也是我的情況 – s3v3n

2
document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() { 
    document.addEventListener("backbutton", function (e) { 
     e.preventDefault(); 
    }, false); 
} 
0

你必須重載後退按鈕行動裝置就緒... 這裏是一個完整的工作示例「的index.html」

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Back Button</title> 
    <link rel="stylesheet" type="tex`enter code here`t/css" href="style.css"> 
    <script> 
     function getTitle() { 
      document.getElementById("ct").innerHTML = "DEMO: " + document.title; 
     } 
    </script> 
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
    // Wait for device API libraries to load 
    // 
    function onLoad() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
     getTitle(); 
    } 
    // device APIs are available 
    // 
    function onDeviceReady() { 
     // Register the event listener 
     document.addEventListener("backbutton", onBackKeyDown, false); 
    } 
    // Handle the back button 
    // 
    function onBackKeyDown() { 
     alert('Backbutton key pressed'); 
     console.log('Backbutton key pressed'); 
    } 
    </script> 
    </head> 
    <body onload="onLoad()"> 
    <ul id="nav"> 
     <li><a href="index.html">&larr; Back</a></li> 
     <li><a href="#" id="ct" onclick="location.reload();"></a></li> 
    </ul> 
    </body> 
</html> 

我用這個代碼和後退按鈕最終覆蓋。 ...

參考 - >https://github.com/amirudin/PhoneGapPluginDemo/blob/master/www/evt-backbutton.html

相關問題