在Windows Phone 7上的PhoneGap中包含本地JavaScript

时间:2012-08-14 10:23:06

标签: windows-phone-7 jquery-mobile cordova

我有一个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上的文件:/// android_asset / www /),这在Android,iPhone甚至BlackBerry上运行良好。但是,在Windows Phone 7上,它似乎根本不起作用。

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

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

尝试在GapSourceDictionary.xml中添加你的j。

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>

<强> EDITED

我成功地使用以下过程动态加载新的本地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");

我希望这会对你有所帮助。

答案 1 :(得分:1)

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