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

Windows phone 7 在Windows Phone 7上的PhoneGap中包含本地JavaScript,windows-phone-7,jquery-mobile,cordova,Windows Phone 7,Jquery Mobile,Cordova,我有一个PhoneGap应用程序,设计用于多种移动平台。我正在使用jQuery Mobile从Internet上的外部页面加载动态HTML内容。有问题的系统是WindowsPhone7 这是我从外部页面得到的,脚本标签的URL已经被替换为从手机加载,而不是从网络加载,以节省带宽: <script type="text/javascript" charset="utf-8" src="x-wmapp1:/app/www/test.js"></script> 当我将x-

我有一个PhoneGap应用程序,设计用于多种移动平台。我正在使用jQuery Mobile从Internet上的外部页面加载动态HTML内容。有问题的系统是WindowsPhone7

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

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

当我将x-wmapp1:part替换为相应的部件(例如。file:///android_asset/www/ 在Android上)。然而,在WindowsPhone7上,它似乎根本不起作用

当我尝试通过$.getScript函数加载同一URL时,它总是返回404 eror,即使我尝试仅使用相对路径加载它也是如此


有什么建议吗?

尝试在GapSourceDictionary.xml中添加js

GapSourceDictionary.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>
在我的页面中,我调用了如下函数:

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

我希望这对您有所帮助。

请尝试使用windows路径,如
文件:\\\
。因为文件系统希望目录分离是最可能的问题。

谢谢您的回答。。。我在GapSourceDictionary.xml文件中已经有了这些文件,不幸的是,相对路径也给了我一个拒绝访问的错误。您能提供一些关于文件夹结构的信息吗?主项目文件夹中应该有一个文件www,该文件应该包含所有HTML、JavaScript、CSS和图像。如果动态HTML内容加载是通过JQ AJAX执行的,请确保已将数据类型设置为HTML(数据类型:“HTML”)。IE mobile期望的数据类型正是您设置的数据类型,如果数据类型错误,则不会收到内容。我将很快使用从jQuery论坛检索到的解决方案更新我的答案。我成功地在演示页面中加载了新的JS。该测试是使用Windows Phone 7 Emulator的IE浏览器执行的。我会更新我的帖子你用正斜杠尝试过windows风格的路径吗?不,很好。。。我会在周一检查一下,谢谢。恭喜Kiran。它起作用了。我通过提供像dynamicJSload(\\js\\test.js)这样的本地url来测试dynamicJSload url函数,它成功了。我的html文件和js文件夹位于同一路径。@托利斯您是否尝试过通过PhoneGap 1.8.1执行此操作?对我来说,它不起作用,使用jQuery的getScript,我得到了一个“无效参数”错误文件协议实际上是file://,而不是file:\\\。。。不幸的是,上述解决方案对我不起作用,对不起
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");