2015-11-04 66 views
0

我已經嘗試了很多解決方案,但似乎無法捕獲Android的「後退」事件。我想要做的就是防止後退按鈕關閉應用程序。PhoneGap/Onsen用戶界面 - 無法捕獲安卓後退按鈕

對於上下文,我使用Onsen UI庫(使用AngularJS作爲核心)構建了一個HTML5跨平臺應用程序。我使用PhoneGap Build來創建iOS和Android版本。我正在測試三星Galaxy S4。

這是我當前的嘗試(即不工作):

module.run(function($rootScope){ 
 
\t document.addEventListener("backbutton", function (e) { 
 
\t \t e.preventDefault(); 
 
\t }, false); 
 
});

我缺少什麼?

回答

0

我不認爲你需要把該事件e像你這樣,我用的是這樣的作品:

onBackButton: function() { 
     console.log('User pressed back button.'); 

     if (<logic to determine if app is at its home screen>) { 
      // Go to launcher 
      navigator.app.exitApp(); 
     } else { 
      // Logic to determine what view is the "back" view 
     } 
    } 

也是您在註冊「後退按鈕」事件偵聽器後的「deviceready」事件已收到。我註冊礦在 「deviceready」 回調函數:

onDeviceReady: function() { 
    document.addEventListener('pause', app.onDevicePause, false); 
    document.addEventListener('resume', app.onDeviceResume, false); 
    document.addEventListener('offline', app.onOffline, false); 
    document.addEventListener('online', app.onOnline, false); 

    if (device.platform === 'Android') { 
     document.addEventListener('backbutton', app.onBackButton, false); 
     document.addEventListener('menubutton', app.onMenuButton, false); 
     document.addEventListener('searchbutton', app.onSearchButton, false); 
    } 
    ... 
} 
+0

感謝您的反饋西蒙。最近幾天我嘗試了類似的方法,但不是那種確切的語法,所以我會再次嘗試一下。 – Dresden

+0

再次感謝您的建議,但我無法讓這個工作。事實上,'deviceready'從來沒有被解僱過。我在.run和.controller裏試過了。我也嘗試使用ons.ready(它做了fire)而不是deviceready,但後退按鈕的代碼仍然沒有執行。 – Dresden

0

這項工作對我來說:

HTML:

<ons-navigator> 
    <ons-page var="mypage"> 
     ... 
    </ons-page> 
</ons-navigator> 

JAVASCRIPT:

ons.ready(function() { 
    mypage.setDeviceBackButtonHandler(function() { 
    doSomething(); 
    }); 
});