我正在使用PhoneGap 1.5.0,jQuery 1.7.1和jQuery Mobile1.0.1,并试图覆盖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();
}
但它只在我的应用程序的第一页起作用。切换到不同的页面后,“后退”按钮什么也不做。该应用程序由如下所示的选项卡视图组成:
<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ört</a>
</li>
</ul>
</div>
<!-- /navbar -->
</div>
<!-- /footer -->
</div>
这是一个愚蠢的错误,还是我必须考虑一些特殊的东西才能让它正常工作?提前谢谢。
发布于 2012-03-12 14:44:26
我浏览了新的Phonegap源代码,并做了以下更改以使work按钮工作。
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.js
的document.addEventListener
的else
块中的第507行之后
if (e === 'backbutton') {
var exec = require('cordova/exec')
exec(null, null, "App", "overrideBackbutton", [true]);
}
将以下代码放在cordova-1.5.0.js
中cordova
定义的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.js
中cordova
定义的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;
}
发布于 2012-03-16 23:23:15
布莱斯·柯蒂斯在that page上建议改变这句话:
channel.onNativeReady.subscribe(_self.boot);
至:
channel.onNativeReady.subscribeOnce(_self.boot);
在文件的末尾。
这似乎为我做了这个把戏,修复了后退按钮、菜单按钮和搜索按钮!
发布于 2012-09-04 19:37:06
@dhaval :我在Android的cordova-1.5.0.js中做了以下更改。
我没有处理后退按钮的页面工作正常,但我处理后退按钮的地方不起作用。
它甚至不能选择函数
function handleBackButton() {
console.log("Back Button Pressed!");
navigator.app.exitApp();
}
https://stackoverflow.com/questions/9631933
复制相似问题