WebBrowser修改默认白色背景

        背景:在使用Winform的WebBrowser显示网页的时候,在网页还未加载完成之前会显示白色,刚好网页内容呈现黑色,这样视觉效果上就十分差,想把这层白色的去掉。


        试了很久之后发现根本去不掉,应该是控件默认自带的颜色。那就只能更换思路,在网页加载完毕之后,也就是在事件DocumentCompleted中,再将webbrowser显示出来,但是坑就坑在这里,winfrom的webbrowser隐藏不了,试了很多种方式都不行比如直接.hide(),亦或是让其父容器变成collapsed

        最后,想了想换成WPF的webbrowser,因为是WPF的,所以可以调用Visiablity属性,也就顺利隐藏了,还有种思路是

通过Opacity,透明属性,从0-1,但是我试了下不行。也即是说换成WPF的,是可以顺利解决这个白色背景的问题

        但是因为涉及到跟网页JS交互,是需要通过获取到网页的源码,来得到其中的一些数据,Winform很简单可以使用自带的方法。代码如下:

 private void bi_Click(object sender, RoutedEventArgs e)
        {
            var e1 = webBrowser.Document.All["size"];
            string x = e1.OuterHtml;

            System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("width=.*?&");
            var s = regex.Matches(x);
            if(s.Count>0)
            {
                string str = s[0].Value.ToString();
                string width=  str.Substring(str.IndexOf('=')+1, str.Length - str.IndexOf('=') - 2);
            }
        }

第一句var e1 = webBrowser.Document.All["size"];中的“size”是网页源码中的一个节点名,通过Document属性得到源码

然后在通过后面的正则找到想要的信息。

          但是在WPF中就行不通了,WPF中的WebBrowser虽然也有Document属性但是是Object类型的,也就是说只能看不能用。如果想用那么必须需要加入Miscrsoft.mshtml这个DLL,这个应该是windows自带的动态库,但是项目临近发布,为了防止某些机器上可能会不存在所以没敢加上,那为什么不直接加到安装包里面呢,因为看了下这个DLL有7M之大,整个安装包目前也就50M左右,为了这个小小的功能加7M得不偿失。

          最后:再次更换思路,还是Winform的,一开始就去访问网页,然后在DocumentComplet中,再将Webborwser的父控件显示出来。

         结论:使用webbrowser虽然在客户端中体验会好点,但还是建议直接调用浏览器显示网页,或者改用chrome,也就是cef,能避免很多坑,因为这两个webbrowser都是很古老的东西了,其调用的IE内核还是IE7的兼容模式,根本不符合主流网页的要求(IE8以上)。像淘宝等网站用webBrowser就会直接提示无法使用。可以通过修改注册表来更改webbrowser所调用的IE内核,但是这种方法繁琐而且不稳定,关键我自己试了下发现没什么用 - -。


      



引用\[1\]中提到了在VS2005中使用WebBrowser控件的简单应用,但是没有具体提到如何修改字体。引用\[2\]中提到了在WPF中嵌入WinForm中的WebBrowser控件,但同样没有提到如何修改字体。引用\[3\]中提到了使用JavaScript来修改字体的方法,但是这种方法不推荐使用。根据提供的引用内容,没有明确的方法来修改WebBrowser控件中的字体。 如果你想在C#中修改WebBrowser控件中的字体,可以尝试使用JavaScript来实现。你可以通过调用WebBrowser控件的Document属性来获取网页的DOM对象,然后使用JavaScript来修改字体样式。例如,你可以使用以下代码来修改字体大小和行高: ```csharp webBrowser1.Document.InvokeScript("execScript", new object\[\] { "document.body.style.fontSize = '16px'; document.body.style.lineHeight = '1.5';", "JavaScript" }); ``` 这段代码会将字体大小设置为16像素,行高设置为1.5倍。你可以根据需要修改这些值来实现你想要的效果。 请注意,这种方法只适用于加载了网页内容的WebBrowser控件,对于本地HTML文件可能会有一些限制。另外,使用JavaScript来修改字体可能会影响网页的布局和样式,所以请谨慎使用。 #### 引用[.reference_title] - *1* *2* [C#中实现WebBrowser控件的HTML源代码读写](https://blog.csdn.net/weixin_29416629/article/details/117833349)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [关于webbrowser更改字体大小的方法](https://blog.csdn.net/weixin_30740295/article/details/96554205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值