前言:我正在使用Coffeescript和Haml,并使用PhoneGap版本在我的Android手机上进行测试。
我正在尝试加载正在服务器上为我的phonegap应用程序编译的外部脚本。在本地测试页面时,一切正常,但在实际设备上进行测试时似乎没有获得脚本。我试过在index.html中正常加载脚本:
%script{:type => 'text/javascript', :src => "http://192.168.5.112:3000/assets/mobile.js"}
我也尝试过使用jQuery的getScript,get和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" />
仍然没有运气。我正在使用weinre来调试问题,但是在网络面板中根本没有显示脚本,或者它显示在那里但没有内容。
非常感谢任何想法!
答案 0 :(得分: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库而不是一个较慢/不可操作的应用程序。