2013-08-28 137 views
1

前言:我正在使用Coffeescript和Haml並使用PhoneGap構建在我的Android手機上進行測試。PhoneGap 2.9.0加載外部腳本

我正試圖加載一個外部腳本,正在爲我的phonegap應用程序在服務器上編譯。當在本地測試頁面時,一切正常,但在實際設備上測試時,它似乎沒有得到腳本。我曾嘗試在正常的index.html加載腳本:

%script{:type => 'text/javascript', :src => "http://192.168.5.112:3000/assets/mobile.js"} 

我也曾嘗試使用jQuery的getScript加入,獲取和AJAX調用:

$.getScript('http://192.168.5.112:3000/assets/mobile.js', alert('Success')) 

$.get 'http://192.168.5.112:3000/assets/mobile.js', (data) -> alert 'Success server' + data 

$.ajax 'http://192.168.5.112:3000/assets/mobile.js', 
    error: (jqXHR, textStatus, errorThrown) -> 
    alert('localError: ' + jqXHR + textStatus + errorThrown) 
    success: (data, textStatus, jqXHR) -> 
    alert('localSuccess: ' + data + textStatus + jqXHR) 

所有這一切都讓我成功警報,但仍然沒有加載腳本。我還在config.xml中將服務器列入白名單

<access origin="http://192.168.5.112:3000" subdomains="true" /> 

仍然沒有運氣。我正在盡其所能地調試問題,但是腳本在網絡面板中根本不顯示,或者在那裏顯示,但沒有內容。

任何想法,非常感謝!

回答

2

192.168是本地主機IP。當你在PC上運行它時,它正在PC上查找該文件。當你在手機上運行它時,它會在手機上查找該文件。這是行不通的。總是下載JS文件並將其包含在您的項目中。如果你將其包含在/ JS文件夾下你的項目,然後將其包含在HTML的head標籤如下:

<script src="js/myScript.js"></script> 

無需列入白名單的域或任何東西。

如果JS文件是公開訪問(即:任何人,不只是你,可以通過HTTP訪問://),那麼你可以使用:

<script src="http://www.serverWhereTheScriptIs.com/myScript.js"></script> 

試圖下載腳本(例如2)可以有其他問題。例如,假設用戶想要使用您的應用,但沒有互聯網連接。該應用程序將自行嘔吐。即使它們具有連接性,也會增加應用程序的加載時間。擁有一個更大的應用程序總是會更好,因爲您包含了一個JS庫,而不是擁有較慢/不可操作的應用程序。