上下文
我正在尝试使用 Intel XDK 模拟 WebView。在阅读 Stack Overflow 上的一些帖子之前,我读到更好的存档方法是使用 window.location = "url";
。它就像一个魅力。
问题
现在我想绑定(bind)硬件后退按钮,这样用户就可以确认他是否要关闭应用程序。问题是它仅在 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
谢谢!
最佳答案
每个页面都有自己的 javascript,如果切换页面,所有 javascript 都将丢失。
如果你想让它工作,你需要在使用 location.href 重定向的任何页面上具有相同的后退按钮处理程序代码,并且你还需要链接 cordova.js。
这意味着您只能让它在您可以控制它们加载的代码的页面上运行,而不是在 google 上运行。
如果您想在任何页面上执行此操作,即使是您无法控制的页面,那么您也不能使用 cordova javascript 代码,因为它会消失,您需要更改 cordova java 代码控制后退按钮的方式行为,完成了on this method :
您必须检测 KeyEvent.KEYCODE_BACK
并显示一个本地对话框以关闭应用程序
关于javascript - 绑定(bind)后退按钮 Intel XDK,甚至在重定向之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39972042/