PhoneGap 1.5.0、jQuery 1.7.1、jQuery mobile 1.0.1を使用しており、Android記載のとおり ここ または )の戻るボタンをオーバーライドしようとしています。ここ 。
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>
それはばかげた間違いですか、それとも正しく機能させるために私が考慮しなければならない特別な何かがありますか?前もって感謝します。
新しい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>
次のコードをdocument.addEventListener
のelse
ブロックのcordova-1.5.0.js
の行の後に配置します-507番
if (e === 'backbutton') {
var exec = require('cordova/exec')
exec(null, null, "App", "overrideBackbutton", [true]);
}
次のコードをfireDocumentEvent
定義のcordova
メソッドのcordova-1.5.0.js
の行の後に配置します-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全体を更新されたコードでこのGistに入れました https://Gist.github.com/2020325
それは私のために働いていますが、それでもすべての可能なシナリオで働くためにいくつかの変更が必要かもしれません。
次のコードをfireDocumentEvent
定義のcordova
メソッドのcordova-1.5.0.js
の行の後に配置します-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;
}
ブライス・カーティスは そのページ で行を変更することを提案しています:
channel.onNativeReady.subscribe(_self.boot);
に:
channel.onNativeReady.subscribeOnce(_self.boot);
ファイルの終わりに。
それは私にとってトリックをするようで、戻るボタンとメニューボタンと検索ボタンを修正しました!
@dhaval:Androidのcordova-1.5.0.jsで次の変更を行いました。
戻るボタンを扱っていないページは正常に動作していますが、戻るボタンを扱っている場所は動作しません。
機能を選択することさえできません
function handleBackButton() {
console.log("Back Button Pressed!");
navigator.app.exitApp();
}