2012-09-22 97 views
2

我有一個iPhone PhoneGap應用程序。有一個HTML文件位於遠程服務器中,另一個HTML文件位於項目包(本地)中。PhoneGap 2.1:升級後(2.0至2.1)onDeviceReady沒有被遠程調用

升級到PhoneGap 2.1之後,我的onDeviceReady()(正在監聽「deviceready」)方法在服務器端不再被調用。我在本地有一個HTML文件,在本地調用onDeviceReady方法時沒有任何問題。但在重定向到網頁應用程序後,onDeviceReady()方法不再被調用。使用PhoneGap 2.0我沒有這種問題。有人有一個想法,爲什麼它可能是這樣嗎?

我已經做了一個完整的新(模板)PG項目,使用控制檯,並將WWW文件夾添加到我的服務器。在模板項目中,我對模板phonegap項目的www遠程文件夾中的index.html進行了重定向。我意識到,總會發生同樣的問題:onDeviceLoad方法沒有被調用。這就是phonegap的模板項目。在本地它可以正常工作,但不能在服務器上運行。我允許的ExternalHosts已被設置爲'*'(允許所有主機)。

我發現,其他開發人員有同樣的問題:https://issues.apache.org/jira/browse/CB-1529

難道有人知道如何解決這個問題?提前致謝。

+0

當遠程調用「device.name」時,調用「device.name」時會返回「null」,但在本地調用時不會返回null。它看起來像PhoneGap沒有被遠程初始化,但只有本地文件。 測試方案:使用safari開發者工具(或WEINRE)調用任意JavaScript代碼(JavaScript注入)並調用「alert(device.name);」。出現警報。如果index.html是在本地讀取的,則警報將顯示設備名稱,但如果index.html位於遠程服務器上,則警報將顯示字符串「null」 – jcdmb

+0

您是否更新了Serverside上的cordova JavaScript文件並執行了您的操作html文件指導他們正確(路徑是否正確?) – Maffo

+0

@Maffo:當然,使用safari開發者工具,我已經檢查了所有的路徑。 – jcdmb

回答

7

PhoneGap開發團隊已經回答了我的Jira Ticket,他們的解決方案已經解決了我的問題。以下是他們寫的內容(https://issues.apache.org/jira/browse/CB-1525):

要在本地解決此問題,請在cordova.js文件中更改以下行: execXhr.open( 'HEAD',「file:///!gap_exec」,true);

收件人: execXhr.open('HEAD',「/!gap_exec」,true);

+0

你搖滾!感謝您找到這個解決方案。我不知道我會做什麼。謝謝! – Austin