[英]“backbutton” event won't fire
我正在尝试为Windows Phone 7构建phonegap应用程序。我正在尝试遵循“后退按钮”事件的文档(http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton ),但我似乎无法使其正常工作。
触发“ deviceready”事件,但不会触发。 在Visual Studio Windows Phone仿真器中编译和运行时,将调用onDeviceReady函数并记录“设备就绪”,但是当按下仿真器后退按钮时,应用程序将退出,并且控制台中不会记录任何内容。 当按下后退按钮时,应运行OnBackKeyDown函数。
来自官方文档的代码副本:
<html>
<head>
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript">
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
console.log("Device ready");
document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown() {
console.log("Back button pressed");
}
</script>
</head>
<body onload="onLoad()">
<div></div>
</body>
</html>
我设法通过将cordova-1.8.1.js的某些部分复制到cordova-2.0.0.js来解决此问题。
在1.8.1中,搜索: var NamedArgs
并将整个对象复制到2.0.0。
在2.0.0中,搜索: var command = service + "/" + action + "/" + callbackId + "/" + JSON.stringify(args);
并替换为:
if ( action == 'overridebackbutton' ) {
if ( NamedArgs[service] && NamedArgs[service][action]) {
var argNames = NamedArgs[service][action];
var newArgs = {};
var len = Math.min(args.length,argNames.length);
for(var n = 0; n < len; n++) {
newArgs[argNames[n]] = args[n];
}
args = newArgs;
}
else if(args && args.length && args.length == 1) {
args = args[0];
}
}
var command = service + "/" + action + "/" + callbackId + "/" + JSON.stringify(args);
这可能不是一个很好的解决方案,但对我有用。
该修复程序已在此处提交: https : //github.com/purplecabbage/incubator-cordova-wp7/commit/d04b87abb3c3822ef25438e1353a1d7d2e0d6628
您将需要等待下周初发布2.1.0,或者同时从源代码构建应用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.