How to load HTML/JavaScript from embedded resource into winform web browser

南楼画角 提交于 2019-11-30 15:34:18

问题


I want to have some HTML files with JavaScript loaded into the web browser control in a winforms (v2.0) application. During execution, I won't have internet access, so JavaScript and HTML forms will be embedded in he resources.resx file.

1) how can I load an HTML document out of the resource (analogous to a file:/// operation, but it isn't being loaded from the file system),

2) how would I declare the JavaScript scripts to be loaded? I.e.,

<script src=resource.jquery.min.js??? ... />

Thanks!


回答1:


To load the HTML document, just compile your html file as embedded resource, and then:

WebBrowser browser = new WebBrowser();
browser.DocumentText = Properties.Resources.<your_html_file>;

If you really need to have external .js files, I think you will probably need to make them embedded resources. Then you can read these resources into a string of javascript.

string GetResourceString(string scriptFile) 
{ 
    Assembly assembly = Assembly.GetExecutingAssembly(); 
    Stream str = assembly.GetManifestResourceStream(scriptFile); 
    StreamReader sr = new StreamReader(str, Encoding.ASCII));
    return sr.ReadToEnd();
}

(Adapted from a reply on this page)

From here, look into IHTMLScriptElement. From what I understand, you may be able to use this javascript string and set it as the ITHMLScriptElement's text field. See this question

Good luck.




回答2:


Here's the file structure.

I had success by doing this:

Set the properties of the html files in my solution like this:

Build Action -> Content
Copy to Output Directory -> Copy always

Configure my webBrowser object properties like this:

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);


来源:https://stackoverflow.com/questions/9934357/how-to-load-html-javascript-from-embedded-resource-into-winform-web-browser

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!