如何在WebInvoke的html文件中设置javascript src(WP7.5,Silverlight)

时间:2012-02-02 04:52:24

标签: .net silverlight windows-phone-7.1 windows-phone-7

我在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 我需要让它脱机工作,这样我的用户就不需要连接互联网来使用我的应用程序了。

谢谢!

2 个答案:

答案 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文件中工作的相对路径,所有文件必须首先复制到隔离存储并从那里加载。