首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"backbutton“事件不会触发

"backbutton“事件不会触发
EN

Stack Overflow用户
提问于 2012-08-08 22:39:35
回答 2查看 1.3K关注 0票数 5

我正在尝试为Windows phone7构建一个phonegap应用程序。我正在尝试遵循"backbutton“事件(http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton)的文档,但我似乎无法使其正常工作。

"deviceready“事件触发,但"backbutton”事件不触发。在Visual Studio Windows Phone仿真器中编译和运行时,将调用onDeviceReady函数并记录"Device ready“,但当按下仿真器的back按钮时,应用程序将退出,控制台中不会记录任何内容。当按下back按钮时,OnBackKeyDown函数应该会运行。

官方文档中的代码副本:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-29 08:18:07

修复已在此处提交:https://github.com/purplecabbage/incubator-cordova-wp7/commit/d04b87abb3c3822ef25438e1353a1d7d2e0d6628

您需要等待2.1.0在下周初发布,或者在此期间从源代码构建您的应用程序。

票数 2
EN

Stack Overflow用户

发布于 2012-09-13 19:54:43

通过将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);并将其替换为:

代码语言:javascript
复制
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);

这可能不是一个很好的解决方案,但它对我很有效。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11866952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档