gpt4 book ai didi

android - 覆盖 Android Backbutton 行为仅适用于具有 PhoneGap 的第一页

转载 作者:IT老高 更新时间:2023-10-28 23:11:21 25 4
gpt4 key购买 nike

我正在使用 PhoneGap 1.5.0、jQuery 1.7.1 和 jQuery mobile 1.0.1 并尝试覆盖 Android 中的后退按钮,如 here 所述或 here .

document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap loaded

function onDeviceReady() {
console.log("PhoneGap Ready!");
// waiting for button
document.addEventListener("backbutton", handleBackButton, false);
}

// handle the back button
function handleBackButton() {
console.log("Back Button Pressed!");
navigator.app.exitApp();
}

但它只适用于我的应用程序的第一页。切换到不同的页面后,后退按钮什么也不做。该应用程序由这样的标签 View 组成:

<body>
<div data-role="page" id="pilotTab">
<div data-role="header">
<h1>Pilot</h1>
</div>
<div data-role="content" id="pilotContent">
content be here ;)
</div>
<div data-role="footer" data-position="fixed">
<div data-role="navbar">
<ul>
<li><a href="pilotTab.html" data-transition="none">Lotse</a>
</li>
<li><a href="bookingTab.html" data-transition="none">Verkehr</a>
</li>
<li><a href="mainListTab.html" data-transition="none">B&ouml;rt</a>
</li>
</ul>
</div>
<!-- /navbar -->
</div>
<!-- /footer -->
</div>

这是一个愚蠢的错误,还是我必须考虑一些特别的事情才能使其正常工作?提前致谢。

最佳答案

我浏览了新的 Phonegap 源代码并进行了以下更改以使后退按钮起作用。

HTML测试代码

<script type="text/javascript">
$("#home").click(function(){
$.mobile.changePage("home.html");
});

document.addEventListener("deviceready", onDeviceReady, false);
document.addEventListener("backbutton", handleBackButton, false);

function onDeviceReady() {
console.log("PhoneGap Ready!");
}

function handleBackButton() {
console.log("Back Button Pressed!");
navigator.app.exitApp();
}
</script>

将以下代码放入 cordova-1.5.0.jsdocument.addEventListenerelse block 中第 507 行之后

if (e === 'backbutton') {
var exec = require('cordova/exec')
exec(null, null, "App", "overrideBackbutton", [true]);
}

将以下代码放入 cordova-1.5.0.jscordova 定义的 fireDocumentEvent 方法中,在第 592 行之后

if(type == "backbutton"){
var e = document.createEvent('Events');
e.initEvent(type);
if (data) {
for (var i in data) {
e[i] = data[i];
}
}
document.dispatchEvent(e);
return;
}

我已将整个 cordova-1.5.0.js 与更新的代码 https://gist.github.com/2020325 放在此要点中

虽然它对我有用,但它仍然可能需要一些更改才能在所有可能的情况下工作。

编辑

将以下代码放入 cordova-1.5.0.jscordova 定义的 fireDocumentEvent 方法中,在第 592 行之后

if(type == "backbutton" || type == "menubutton" || type == "searchbutton"){
var e = document.createEvent('Events');
e.initEvent(type);
if (data) {
for (var i in data) {
e[i] = data[i];
}
}
document.dispatchEvent(e);
return;
}

关于android - 覆盖 Android Backbutton 行为仅适用于具有 PhoneGap 的第一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9631933/

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