我希望在一个winforms(v2.0)应用程序中,将一些带有JavaScript的HTML文件加载到Web浏览器控件中。在执行过程中,我没有互联网访问权限,因此JavaScript和HTML表单将被嵌入到resources.resx文件中。
1)如何从资源中加载HTML文档(类似于file:///操作,但它不是从文件系统加载)?
2)如何声明要加载的JavaScript脚本?例如:
<script src=resource.jquery.min.js??? ... />
谢谢!
我希望在一个winforms(v2.0)应用程序中,将一些带有JavaScript的HTML文件加载到Web浏览器控件中。在执行过程中,我没有互联网访问权限,因此JavaScript和HTML表单将被嵌入到resources.resx文件中。
1)如何从资源中加载HTML文档(类似于file:///操作,但它不是从文件系统加载)?
2)如何声明要加载的JavaScript脚本?例如:
<script src=resource.jquery.min.js??? ... />
谢谢!
要加载HTML文档,只需将您的HTML文件编译为嵌入式资源,然后执行以下操作:
WebBrowser browser = new WebBrowser();
browser.DocumentText = Properties.Resources.<your_html_file>;
如果你确实需要外部的 .js 文件,我认为你可能需要将它们变成嵌入资源。然后你可以将这些资源读取成一个 JavaScript 字符串。
string GetResourceString(string scriptFile)
{
Assembly assembly = Assembly.GetExecutingAssembly();
Stream str = assembly.GetManifestResourceStream(scriptFile);
StreamReader sr = new StreamReader(str, Encoding.ASCII);
return sr.ReadToEnd();
}
这是文件结构。
我通过以下方式取得成功:Build Action -> Content
Copy to Output Directory -> Copy always
var myAssembly = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
var path = myAssembly.Substring(0, myAssembly.Length - "MyLib.DLL".Length) + "WebViews/prototype/index.html";
webBrowser.Url = new Uri(path);
System.IO.Path
函数,例如 GetDirectoryName
,而不是手动使用 Substring
进行切片。另外请注意,这将导致 file:///
URL,这对于 ajax 类型的请求来说并不友好。 - emackey
Properties.Resources.<your_html_file>
将返回内容作为字节数组。 - nathanchere