2015-10-14 70 views
1

任何人都可以給我在Android設備上的特定頁面上的硬件後退按鈕按事件監聽器的例子嗎?jQuery Mobile硬件後退按鈕在android中的

我正在使用此代碼,但無法正常工作。

$(document).on('pageshow', function(){ 

    document.addEventListener("backbutton", function(e){         
     if($.mobile.activePage.is('#dept-list-page')){ 
      e.preventDefault(); 
      alert("back button pressed"); 
      navigator.app.exitApp();   
     }else{ 
      history.back(); 
     } 
    }, false); 
}); 

在Webview中,我使用的是keydown方法。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     switch (keyCode) { 

     case KeyEvent.KEYCODE_BACK: 
      if (webView != null) 
       if (webView.canGoBack()) { 
        webView.goBack(); 
        return true; 
       } 
     } 
    } 
    return super.onKeyDown(keyCode, event); 
} 

但是很多html頁面在一個webview中動態生成,我想在特定頁面上檢查這個頁面。

+0

@BasVanStein先生,科爾多瓦沒有使用。 –

回答

1

如果您正在使用phonegap(科爾多瓦),這似乎是的話,你需要設置eventlistenerdeviceReady

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

function onBackKeyDown(e){ 
    if($.mobile.activePage.is('#dept-list-page')){ 
     //if the page checking doesnt work try: 
     // $.mobile.activePage.attr("id") == '#dept-list-page' 
     e.preventDefault(); 
     alert("back button pressed"); 
     navigator.app.exitApp(); 

    }else{ 
     history.back(); 
    } 
} 

如果您使用的是Android Webview你應該處理後退按鈕在你的Android代碼,而不是使用類似

@Override 
public void onBackPressed(){ 
    if(webView.canGoBack()) webView.goBack(); 
    else super.onBackPressed(); 
} 
+0

我沒有使用科爾多瓦或手機。這是一個混合應用程序。 –

+0

你使用什麼混合框架呢?網頁流量? –

+0

是使用Webview。 –

相關問題