2012-03-29 76 views
6

我想有一些JavaScript的HTML文件加載到一個WinForms(V2.0)應用程序的Web瀏覽器控件。在執行期間,我將無法訪問Internet,因此JavaScript和HTML表單將嵌入到resources.resx文件中。如何從嵌入的資源加載HTML/JavaScript插入WinForm的Web瀏覽器

1)如何可以加載HTML文檔出資源(類似於文件的:///的操作,但它沒有被從文件系統加載),

2)如何將聲明要加載的JavaScript腳本?即,

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

謝謝!

回答

6

要加載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(); 
} 

(從a reply on this page改編)

從這裏,看看IHTMLScriptElement。據我所知,您可能能夠使用此JavaScript字符串並將其設置爲ITHMLScriptElement的文本字段。見this question

好運。

+0

這將無法正常工作的。當作爲嵌入資源,'Properties.Resources建'將返回的內容作爲一個字節數組。 – nathanchere 2015-08-18 09:04:25

0

這裏的文件結構。

enter image description here

我做這個已經成功:

設置HTML文件的屬性在我的解決方案是這樣的:

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

配置我的web瀏覽器對象的屬性是這樣的:

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

你應該使用'System.IO.Path'功能,如'GetDirectoryName'在這裏,而不是用'Substring'手動切片。另請注意,這將導致'file:///'URL對Ajax類型的請求不友好。 – emackey 2016-02-02 16:41:28