我有一个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错误,即使我尝试仅使用相对路径加载它。
有什么建议吗?
答案 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路径。由于文件系统期望\
目录分离是最可能的问题。