gpt4 book ai didi

javascript - "backbutton"事件不会触发

转载 作者:搜寻专家 更新时间:2023-11-01 04:10:28 26 4
gpt4 key购买 nike

我正在尝试为 Windows Phone 7 构建一个 phonegap 应用程序。我正在尝试遵循“后退按钮”事件的文档 (http://docs.phonegap.com/en/2.0.0/cordova_events_events.md。 html#backbutton),但我似乎无法让它工作。

“deviceready”事件触发,但“backbutton”事件不触发。在 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);

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

关于javascript - "backbutton"事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com