1

前言:我正在使用 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 来调试问题,但是脚本根本没有显示在网络面板中,或者它显示在那里但没有内容。

任何想法都非常感谢!

4

1 回答 1

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 库。

于 2013-09-03T10:18:50.477 回答