2012-07-03 35 views
0

我已經花了最後幾個小時拉我的頭髮,應該是一個簡單的問題。JQuery Mobile後退按鈕不支持科爾多瓦1.9.0和Android 2.2

我想利用jQuery手機中的backButton功能來構建一個具有導航圖標的網站。 (這是我的理解,JQM只是調用window.history.back)

該網站在桌面瀏覽器和移動Safari瀏覽器中的預期完美。該網站在Android WebView中無法使用。 (值得注意的是,實際的硬件'清除'按鈕工作並將用戶退回一頁,但JQM圖標只是突出顯示並且無處可見。)

在某些時候,我說過擰它,並且只是稱爲window.history .back自己,但這在手機上什麼都不做。

這裏的軟件:

  • jQuery Mobile的1.1.0
  • 科爾多瓦/ PhoneGap的1.9.0
  • 的Android 2.2

我已經看了許多問題已經問,但他們都沒有提供在Android上的1.1.0/1.9.0組合中似乎有效的解決方案。我也試過科爾多瓦1.8和1.7,同樣的問題。

下面是一個簡單的頁面標題:

<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script> 
<script type="text/javascript" src="cordova-1.9.0.js"></script> 

下面是一個使用JQM調用內置功能:

<a href="index.html" data-icon="back" data-iconpos="notext" data-direction="reverse" data-rel="back" data-transition="slide"></a> 

這裏是用我自己構建了一個電話:

$(document).ready(function() { 
$("#backButton").click(handleBackButton); 
}); 

function handleBackButton() { 
    window.history.back(); //Cordova does something funky with this on Android 
} 

... 

<a id="backButton" href="index.html" data-icon="back" data-iconpos="notext" data-direction="reverse" data-transition="slide"></a> 

更新

有關正向導航模型的一些示例,請參閱本要點。注意data-ajax="false"將4頁

更新2 更新要點包括爲「科爾多瓦返回」 navigator.app.backHistory()通話。這可以在物理頁面之間來回切換,但不能遵守JQM頁面DOM模型。關於如何統一兩者的任何想法? https://gist.github.com/3039722

我不想修改核心Cordova.js代碼,而是在應用程序中添加一些監聽器來處理此問題。有任何想法嗎?

感謝

回答

3

正常工作與科爾多瓦1.9和Android 2.2的。在三個不同的方式使用back

覆蓋後退按鈕:

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

function onDeviceReady() { 
    document.addEventListener("backbutton", handleBackButton, true); 
} 

function handleBackButton() { 
    console.log("back clicked"); 
    window.history.back(); 
} 

隨着data-rel=back

<a data-rel="back" data-role="button">Rel Back</a> 

隨着點擊處理

<a id="forceBack" data-role="button">Force Back</a> 

... 

$("#forceBack").click(function(){ 
    history.back(); 
}); 

完整的源 - https://gist.github.com/3037838

+0

是的。你的代碼可以工作,但是它並沒有像我的實際應用那樣被設置在相同的導航模型中。我已經在前面的導航模型中闡明瞭。添加第3頁和第4頁(單獨文件)會打破「強制返回」功能。在第4頁的鏈接中添加data-ajax =「false」'會打破'Rel Back'功能。 https://gist.github.com/3039722 – britoman

+0

實際上你也保留了'page2'和'page3'的按鈕id,它不會工作,因爲元素id在一個html文件或DOM樹中應該是唯一的。 – dhaval

+0

當你移動到頁面刷新的下一頁時,'data-rel = back'將不起作用,'data-ajax = false'只是這樣做的。 – dhaval

相關問題