2013-08-28 102 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库,而不是拥有较慢/不可操作的应用程序。