我尝试在我的wp8 cordova应用程序中实现后退按钮功能,按下设备上的硬件后退按钮应导航到应用程序的上一页。
我做了什么
function onLoad() {
document.addEventListener("deviceready", init, false);
document.addEventListener("resume", onResume, false);
document.addEventListener("backbutton", onBackKeyDown, false);
}
function init() {
//some code
}
function onResume() {
//some code
}
function onBackKeyDown() {
window.history.back();
return false;
}
我也试过替换" window.history.back();"使用" navigator.app.backHistory();"这似乎也不起作用
然后我尝试将代码放入try catch块
try
{
navigator.app.backHistory();
//window.history.back();
}
catch (e)
{
console.log("exception: " + e.message);
}
这似乎也失败。无论我做什么,应用程序似乎退出应用程序而不是向后移动,有趣的是当我在IE控制台中尝试这个似乎完美的工作
请帮助这些家伙
提前致谢
答案 0 :(得分:6)
所以让我们尝试另一种适用于wp8的方法。此方法需要WinJS框架,并且将按以下方式工作:
在onDeviceReady函数中,您将使用此代码:
if (device.platform == "windows") {
// Get the back button working in WP8.1
WinJS.Application.onbackclick = function () {
onBackKeyDown();
return true; // This line is important, without it the app closes.
}
}
else {
document.addEventListener("backbutton", onBackKeyDown, false);
}
现在只需添加一个函数来处理onBackKeyDown事件,就是这样:
function onBackKeyDown() {
// Back key pressed, do something here
}
Cordova挂钩到BackButton-Event的标准方法如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Back Button Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// device APIs are available
//
function onDeviceReady() {
// Register the event listener
document.addEventListener("backbutton", onBackKeyDown, false);
}
// Handle the back button
//
function onBackKeyDown() {
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>
重要的是在DeviceReady函数中调用BackButton-Event !