3

我有一个 PhoneGap 应用程序,旨在在多个移动平台上工作。我正在使用 jQuery Mobile 从 Internet 上的外部页面加载动态 HTML 内容。有问题的系统是 Windows Phone 7。

这是我从外部页面得到的,脚本标签的 URL 已经替换为从手机而不是从网络加载以节省带宽:

<script type="text/javascript" charset="utf-8" src="x-wmapp1:/app/www/test.js"></script>

当我将x-wmapp1:部分替换为相应的对应项(例如,Android 上的 file:///android_asset/www/)时,这在 Android、iPhone 甚至黑莓上都可以正常工作。但是,在 Windows Phone 7 上,它似乎根本不起作用。

当我尝试通过 $.getScript 函数加载相同的 URL 时,它总是返回 404 错误,即使我尝试仅使用相对路径加载它。

有什么建议么?

4

2 回答 2

4

尝试在 GapSourceDictionary.xml 中添加您的 js。

GapSourceDictionary.xml XML 文件列出了所有 HTML 应用程序资源。当应用程序启动时,会读取此 XML 文件,并将列表中包含的所有文件添加到隔离存储中,以便 WebBrowser 控件可以为其提供服务。

例如,您的 GapSourceDictionary.xml 应如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <GapSourceDictionary>
        <FilePath Value="www\index.html"/>
        <FilePath Value="www\test.css"/>
        <FilePath Value="www\phonegap-1.3.0.js"/>
        <FilePath Value="www\js\custom.js"/>
    </GapSourceDictionary>

在您的 HTML 文件中使用相对路径来指定外部脚本文件的 URL:

    <script type="text/javascript" src="./js/custom.js"></script>

已编辑

我成功地使用以下过程动态加载了一个新的本地 JavaScript 文件。在 PhoneGap 2.0 上测试成功。不幸的是,同样的测试在 PhoneGap 1.8.1 上失败了

下面是动态加载 JS 的源代码:

function dynamicJSload(url)
{
    var script = document.createElement('script');
    script.type = "text/javascript";
    if (script.readyState)
    {
        script.onreadystatechange = function(){
            if (script.readyState == "complete" || script.readyState == "loaded"){
                script.onreadystatechange = null;
            }
        };
    }
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

在我的页面中,我调用了这样的函数:

  dynamicJSload("js\\test.js");

我希望这可以帮助你。

于 2012-08-21T15:47:15.063 回答
1

请尝试使用 Windows 路径,例如file:\\\. 由于文件系统期望\目录分离是最有可能的问题。

于 2012-08-26T17:53:47.323 回答