Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止Android在按下backbutton时关闭web应用程序?_Javascript_Android_Cordova_Back Button - Fatal编程技术网

Javascript 如何防止Android在按下backbutton时关闭web应用程序?

Javascript 如何防止Android在按下backbutton时关闭web应用程序?,javascript,android,cordova,back-button,Javascript,Android,Cordova,Back Button,我正在开发一个HTML5Web应用程序,并使用Cordova(phonegap)1.7进行编译 我想覆盖Android backbutton,以便调用window.history.back(),而不是关闭应用程序(默认Android)。我如何防止Android在按下后退按钮时终止defaultactivity 我在logcat中得到了“按下后退按钮!!!!”,因此该方法在应用程序关闭之前被触发 这就是我到目前为止所做的: // Wait for Cordova to load

我正在开发一个HTML5Web应用程序,并使用Cordova(phonegap)1.7进行编译

我想覆盖Android backbutton,以便调用window.history.back(),而不是关闭应用程序(默认Android)。我如何防止Android在按下后退按钮时终止defaultactivity

我在logcat中得到了“按下后退按钮!!!!”,因此该方法在应用程序关闭之前被触发

这就是我到目前为止所做的:

        // Wait for Cordova to load
        //
        document.addEventListener("deviceready", onDeviceReady, false);

        // Cordova is ready
        //
        function onDeviceReady() {

            document.addEventListener("backbutton", function(e) {

                console.log("Back button pressed!!!!");                 
                window.history.back();


            }, false);

        }

编辑:如果可能的话,我愿意接受解释直接从DefaultActivity.java android类模拟window.history.back()的方法的答案

不必这样做,但是,您是否尝试过
返回true


与Java SDK一样,如果您返回
True
,系统将假定您已正确捕获事件,并且不再将其传递给其他事件侦听器。

我通过将下面的代码添加到
DefaultActivity.Java
文件中来解决我自己的问题,以防止默认的android行为,并保留问题中所述的JavaScript代码:

@Override
public void onBackPressed() {
   return;
}

我希望这能帮助将来有同样问题的人

我采取了这种方法。如您所示,我钩住了backbutton事件。我查看这是否是第一页,然后询问用户是否要退出程序。这取决于您希望程序根据其状态执行的操作。我没有像您所示添加覆盖;我似乎不需要它

if ($.mobile.activePage.attr('id') === 'firstpage') {
    // Prompt to confirm the exit
} else {
  window.history.back();
}
如果他们想退出,您可以拨打:

navigator.app.exitApp();
关闭您的程序

我想你仍然想允许用户退出你的应用程序。我不倾向于使用那些 不要允许某种形式的出口


希望这对您有所帮助。

该代码应该可以工作。你是从哪里得到PG的1.7版本的,因为它还没有发布。你是在github上建造吗?@SimonMacDonald 1.7rc1上周四在download.phonegap.com上发布。看到代码没用了吗?/是的,我试过了。但遗憾的是,它没有起作用。我也只是打印到控制台,没有执行back(),但它仍然存在。奇怪的我正在使用phonegap 1.7,这似乎是唯一有效的方法。然而,我更喜欢非本机解决方案,这样它可以在phonegap构建之类的事情上工作。非常感谢你的帮助。我也试过同样的代码。。。但现在它既不关闭应用程序也不返回。。。。“后退”按钮已禁用。。。。你能建议我修改一下,这样我就可以回到上次访问的页面了吗