0

我正在创建一个包含在 Titanium 应用程序的 webview 中的 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);

我到处都能看到关于这个问题的线程,他们说要使用后退按钮事件,但它根本没有被触发。如果我将它包装在一个 deviceready 事件中,就像上面一样,那么 deviceready 也不会被调用。webview 是否以某种方式抑制了这些事件,或者是否有另一种方法可以使用 jQuery Mobile 来做到这一点?

4

1 回答 1

0

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

您需要使用适合 Appcelerator 的东西。首先你应该检查一下 webViews 的 canGoBack、canGoForward、goBack 和 goForward 函数。更多信息可以在这里找到。

基本上,您将需要创建将处理 webview 中的后退按钮的函数。像这样的东西:

detailContainerWindow.addEventListener('android:back', function(e){     
    if (detailView.canGoBack()) {
            detailView.goBack();
        } else {
            detailContainerWindow.close();
        }
});
于 2013-05-21T14:50:57.017 回答