上下文
我正在尝试使用英特尔XDK模拟WebView。在阅读Stack Overflow上的一些帖子之前,我读到了更好的归档方法是使用window.location = "url";
。它就像一个魅力。
问题
现在我想绑定硬件后门按钮,这样用户就可以确认是否要关闭应用程序。问题是它只有在window.location
不执行时才有效。
代码
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<script src="cordova.js"></script>
<script>
window.location = "https://google.com";
var tried = false;
document.addEventListener("backbutton", backButton, false);
function backButton(){
if (tried){
navigator.app.exitApp();
}
else {
alert('TEST: Next time APP should close');
tried = !tried;
}
}
</script>
</head>
<body>
</body>
</html>
结果
评论window.location
执行window.location
谢谢!
答案 0 :(得分:1)
每个页面都有自己的javascript,如果你切换页面,所有的javascript都会丢失。
如果你想让它工作,你需要在使用location.href重定向的任何页面上使用相同的backbutton处理程序代码,你也需要链接cordova.js。
这意味着您只能在可以控制其加载的代码的网页上使用它,而不是在Google上。
如果你想在任何页面上进行,即使在你无法控制的页面上,那么你也不能使用cordova javascript代码,因为它会消失,你需要改变cordova java代码控制后退按钮的方式行为,已完成on this method:
您必须检测KeyEvent.KEYCODE_BACK
并显示原生对话框以关闭该应用</ p>