Javascript &引用;“后按钮”;赢得比赛';t火
我正在尝试为Windows Phone 7构建phonegap应用程序。我正试图遵循“backbutton”事件的文档(http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton),但我似乎无法让它发挥作用 “deviceready”事件激发,但“backbutton”事件不激发。在Visual Studio Windows Phone emulator中编译和运行时,会调用onDeviceReady函数并记录“设备就绪”,但当按下emulator后退按钮时,应用程序退出,控制台中不会记录任何内容。 按下后退按钮时,OnBackKeyDown功能应运行 官方文件中的代码副本:Javascript &引用;“后按钮”;赢得比赛';t火,javascript,windows-phone-7,cordova,cordova-2.0.0,Javascript,Windows Phone 7,Cordova,Cordova 2.0.0,我正在尝试为Windows Phone 7构建phonegap应用程序。我正试图遵循“backbutton”事件的文档(http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton),但我似乎无法让它发挥作用 “deviceready”事件激发,但“backbutton”事件不激发。在Visual Studio Windows Phone emulator中编译和运行时,会调用onDeviceReady函数并
<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>
函数onLoad(){
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
}
函数ondevicerady(){
控制台日志(“设备就绪”);
document.addEventListener(“backbutton”,onBackKeyDown,false);
}
函数onBackKeyDown(){
控制台日志(“按下后退按钮”);
}
已在此处提交修复程序:
你需要等待下周初2.1.0的发布,或者同时从源代码构建你的应用。我通过将cordova-1.8.1.js的一些部分复制到cordova-2.0.0.js来解决这个问题 在1.8.1中,搜索:
var NamedArgs
,并将整个对象复制到2.0.0
在2.0.0中,搜索:var命令=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);
if(操作=='overridebackbutton'){
if(NamedArgs[服务]&&NamedArgs[服务][行动]){
var argNames=NamedArgs[service][action];
var newArgs={};
var len=Math.min(args.length,argNames.length);
对于(变量n=0;n
这可能不是一个很好的解决方案,但它对我很有效。我可以使用2.0.0中的项目模板在物理设备上重现这个问题。带有WP 7.5的诺基亚Lumia 800(7.10.8773.98)。我建议你填写一份bug报告,并在这里发布链接。我填写了一份错误报告。投赞成票!!使用上述代码,您可以使用以下语句启用/禁用默认后退按钮行为(退出应用程序):Cordova.exec(null,null,“CoreEvents”,“overridebackbutton”,“true”);或者Cordova.exec(null,null,“CoreEvents”,“overridebackbutton”,“false”);