Csharp/C#教程:C#WebBrowser HTML,引用脚本和图像分享


C#WebBrowser HTML,引用脚本和图像

我正在使用WebBrowser控件编写一个C#应用程序,我希望我显示的所有内容都来自嵌入式资源 – 而不是静态本地文件,而不是远程文件。

将控件的初始文本设置为嵌入式HTML文件非常适合此post启发的此代码:

browser.DocumentText=loadResourceText("myapp.index.html"); private string loadResourceText(string name) { Assembly assembly = Assembly.GetExecutingAssembly(); Stream stream = assembly.GetManifestResourceStream(name); StreamReader streamReader = new StreamReader(stream); String myText = streamReader.ReadToEnd(); return myText; } 

就像那样,HTML-javascript中引用的文件,如Csharp/C#教程:C#WebBrowser HTML,引用脚本和图像分享等图像不起作用。 我在这里和这里找到了类似的问题,但两者都没有问我的意思,即在exe中引用嵌入式资源,而不是文件。

我尝试了res://...并使用<base href='..."但似乎都没有工作(尽管我可能没有做对)。

也许(按照我自己对这个问题的建议),使用一个小的嵌入式C#网络服务器是唯一的方法……但我会想到有一些技巧可以实现这一目标吗?

谢谢!

我可以看到三种方法来实现这一目标:

1:将您需要的文件写入临时区域中的平面文件,将WebBrowser导航到html文件,并在页面加载后删除它们

2:正如你所说,一个嵌入式web服务器 – 也许是HttpListener – 但请注意,这使用HTTP.SYS,因此需要管理员权限(或者你需要预先打开端口 )

3:像1一样,但使用命名管道服务器来避免写入文件

我不得不说,第一个更简单,需要零配置。

上述就是C#学习教程:C#WebBrowser HTML,引用脚本和图像分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 /// Hi try this may help u. private string CheckImages(ExtendedWebBrowser browser) { StringBuilder builderHTML = new StringBuilder(browser.Document.Body.Parent.OuterHtml); ProcessURLS(browser, builderHTML, "img", "src"); ProcessURLS(browser, builderHTML, "link", "href"); // ext... return builderHTML.ToString(); } private static void ProcessURLS(ExtendedWebBrowser browser, StringBuilder builderHTML, string strLink, string strHref) { for (int k = 0; k < browser.Document.Body.Parent.GetElementsByTagName(strLink).Count; k++) { string strURL = browser.Document.Body.Parent.GetElementsByTagName(strLink)[k].GetAttribute(strHref); string strOuterHTML = browser.Document.Body.Parent.GetElementsByTagName(strLink)[k].OuterHtml; string[] strlist = strOuterHTML.Split(new string[] { " " }, StringSplitOptions.None); StringBuilder builder = new StringBuilder(); for (int p = 0; p < strlist.Length; p++) { if (strlist[p].StartsWith(strHref)) builder.Append (strlist[p].Contains("http")? strlist[p] + " ": (strURL.StartsWith("http") ? strHref + "=" + strURL + " ": strHref + "= " + "https://xyz.com" + strURL + " " )); else builder.Append(strlist[p] + " "); } builderHTML.Replace(strOuterHTML, builder.ToString()); } } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1003388.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐