2014-02-11 85 views
2

deviceready不再在第二頁上觸發。 假設我有:iOS - deviceready在5秒後未觸發​​

page1.html - 輸入頁面。

page2.html - 另一頁。

在第1頁,我有這樣的代碼:

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

function onDeviceReadyPopup(){ 
    window.location.href="page2.html"; 
} 

在第2頁,我有這樣的代碼:

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

function onDeviceReady() { 
    alert("Script - Device ready!"); 
} 

問題:警報從未解僱,因爲它不會觸發事件deviceready。這將在android中正常工作。

我懷疑這是因爲我使用的是window.location.href

+0

你如何在iOS應用程序中設置視圖?您是否使用自定義網頁代理? – Jason

回答

1

它是否甚至達到ondevicereadypopup()函數?也許嘗試在那裏插入一個警報,以確保你的程序在ios中達到它。而且,當我想在我的ios方案,以改變頁面通常我這樣處理:

$.mobile.changePage("#idofpage"); 

恐怕唯一的事情是,你可能會使用多個HTML文件,它可以使這個有點困難,phonegap可以很容易地在一個html文件中使用所有頁面,然後唯一標識每個頁面。例如:

<div data-role="page" id="page1"> 
    <!--content of page--> 
</div> 

,當你讓你的網頁是這樣的話,那是非常容易使用他們的ID,你可以使用一些很好的快速轉換他們之間太來找到它們。

+0

看起來你的建議是'JQuery Mobile'?是的,我使用了多個html文件,當我意識到這一點時已經太遲了。 Phonegap在我的第一頁上工作得很好,但它不能在第二頁上工作,除非我關閉並重新打開myapp。你有單頁結構的鏈接嗎? – JunM

+0

是的,這是jQuery的移動,這就是我剛剛學到的地方:http://demos.jquerymobile.com/1.3.2/widgets/pages/ ...你可以從該文件中獲取所有的HTML並將其扔到頁div和它應該工作得很好 – siegs

+0

謝謝。 +1爲您提供幫助。仍然希望如果有另一種方式。將我的應用程序轉換爲單個頁面可能需要很多工作。 – JunM

0

你是否包含了設備API,因爲現在所有的核心功能都在插件中。

從3.x開始我就這麼說了。 加入以下config.xml的工作對我來說

<gap:plugin name="org.apache.cordova.device" /> 

我發現在這個頁面的底部 Phonegap Build Upgrading from 2.9 to 3.1

2

deviceready事件觸發每次只應用程序生命週期信息一次。

此事件對於任何應用程序都至關重要。它表示科爾多瓦的設備API已經加載並準備訪問。

Cordova由兩個代碼庫組成:native和JavaScript。在加載本機代碼時,會顯示自定義加載圖像。

但是,JavaScript只會在DOM加載後加載。這意味着Web應用程序可能會在相應的本機代碼可用之前調用Cordova JavaScript函數。

Cordova完全加載後,會觸發deviceready事件。

更多:http://cordova.apache.org/docs/en/3.5.0/cordova_events_events.md.html#deviceready

相關問題