2013-05-21 145 views
0

我正在创建一个包含在Titanium应用程序的webview中的jQuery Mobile应用程序。当按下Android后退按钮时,它会退出应用程序而不是转到上一页(在我看来,并非最佳默认行为)。我试图通过在应用程序加载时执行以下代码来解决此问题:处理jQuery Mobile中的Android后退按钮

document.addEventListener("deviceready", function() { 
      alert("adding back button event"); 
      document.addEventListener("backbutton", function (e) { 
       alert("in back button event"); 
       if ($.mobile.activePage.is('#homepage')) { 
        alert("exit app"); 
        e.preventDefault(); 
        navigator.app.exitApp(); 
       } 
       else { 
        alert("go back"); 
        navigator.app.backHistory() 
       } 
      }, false); 
     }, false); 

无处不在我看到这个问题的线索,他们说使用backbutton事件,但它并没有被解雇。如果我将其封装在deviceready事件中,如上所述,则deviceready也不会被调用。 webview以某种方式抑制这些事件,还是有另一种方式与jQuery Mobile做到这一点?

回答

0

您的示例将不起作用,因为您正尝试使用Phonegap API调用进行按钮处理。

您需要使用适合Appcelerator的东西。首先,您应该查看canGoBack,canGoForward,goBack和goForward功能的webViews.More信息可以发现here

基本上你需要创建一个函数来处理你的webview中的后退按钮。类似这样的:

detailContainerWindow.addEventListener('android:back', function(e){  
    if (detailView.canGoBack()) { 
      detailView.goBack(); 
     } else { 
      detailContainerWindow.close(); 
     } 
});