Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;“后按钮”;赢得比赛';t火_Javascript_Windows Phone 7_Cordova_Cordova 2.0.0 - Fatal编程技术网

Javascript &引用;“后按钮”;赢得比赛';t火

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函数并

我正在尝试为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功能应运行

官方文件中的代码副本:

<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”);