我在Windows Phone中使用WebBrowser控件来调用javascript调用。现在,当我在线引用脚本时,代码工作正常。但是,当我在本地引用它时,它会中断。
我认为这与隔离存储以及WP7应用程序的安装方式有关,但我想让别人接受。
HTML文件包含:
<script type="text/javascript" src="scripts/myJavascript.js"></script>
当我做的时候它可以正常工作
<script type="text/javascript" src="http://mysite.com/myJavascript.js"></script>'
想一想如何在本地引用该文件?我将它设置为Content and Copy Always。
最后,真实文件为http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js 我需要让它脱机工作,这样我的用户就不需要连接互联网来使用我的应用程序了。
谢谢!
答案 0 :(得分:1)
我无法立即看到您的方法存在问题,但是,您没有显示用于将文件加载到本地存储的代码。我建议查看PhoneGap的源代码,它将多个文件加载到隔离的存储中以便在WebBrowser中呈现,以查看它是如何做到的。以下是PhoneGap代码的相关opart:
fileResourceStreamInfo = Application.GetResourceStream(new Uri(file.path, UriKind.Relative));
if (fileResourceStreamInfo != null)
{
using (BinaryReader br = new BinaryReader(fileResourceStreamInfo.Stream))
{
byte[] data = br.ReadBytes((int)fileResourceStreamInfo.Stream.Length);
string strBaseDir = AppRoot + file.path.Substring(0, file.path.LastIndexOf(System.IO.Path.DirectorySeparatorChar));
if(!appStorage.DirectoryExists(strBaseDir))
{
//Debug.WriteLine("Creating Directory :: " + strBaseDir);
appStorage.CreateDirectory(strBaseDir);
}
// This will truncate/overwrite an existing file, or
using (IsolatedStorageFileStream outFile = appStorage.OpenFile(AppRoot + file.path, FileMode.Create))
{
Debug.WriteLine("Writing data for " + AppRoot + file.path + " and length = " + data.Length);
using (var writer = new BinaryWriter(outFile))
{
writer.Write(data);
}
}
}
}
答案 1 :(得分:1)
正如Colin所说,对于在本地加载的HTML文件中工作的相对路径,所有文件必须首先复制到隔离存储并从那里加载。