WebBrowser,挖坑,跳坑,填坑

最近在 C# Asp.net 平台上的一个项目中用到了 WebBrowser 控件。自然而然就进入了 一连串的坑了。用网络上一同行的话“用WebBrowse,就是在给自己挖坑”。

道术太浅,这个坑我还是跳了。


 需求:截取网页中的一部分,生成图片。

咣当咣当在本地机子码了一遍,后台用了 WebBrowser 控件。运行,一切OK。

  

然后就放到服务器上了,当然问题也就跟着来了...

在服务器上部署运行遇到如下问题,

 

发现坑一:页面在浏览器中打开正常,但某些图片在截图中没有显示出来

但是在本地上部署的和局域网内部署运行都OK,一开始,这个问题让我觉得有些奇葩,也是一脸懵逼。

开始寻找bug之旅了,我发现截图没有显示出来的图片都是被用做背景的图片(background-image),而 <img> 标签的图片都是正常的。

我开始怀疑是 background-image 中的图片比 <img> 标签的图片 加载慢,而导致以上问题的。

小测试一下,果不其然,真是这个问题。问了度娘一下,问题得到确认了,也弄清了原理。

在本地和局域网部署运行OK,加载速度很快,没发现问题,而在外网中运行,加载快慢就显现出来了,问题也就出来了。

 

 

发现坑二:网页中的圆角,浮动在截图中并未有效果

这个问题,也是让我一开始是 一脸懵逼 + 一头雾水的。

在本地运行是很OK的。到服务器上运行就这#样了。

很快,我就想应该是平台浏览器的内核问题,也就是 WebBrowser 控件的内核问题。但是都是基于 asp.net 平台的啊,一样的平台,一样的代码,how ?

又见了度娘一下,果不其然,WebBrowser 控件的内核是跟所部署运行的机子的IE浏览器内核是相关的,老版本的 IE 是不支持很多 CSS3 和 H5 新技能的。

我有感觉了,肯定是服务器的 IE 浏览器版本太 old 了。

查看了一下本地的IE版本,是 IE9。再查看一下服务器的 IE 版本,是 IE8。 噢,我的感觉是对了的。

            

 

立马就把服务器的 IE 浏览器更新,额... 一开始我是想更新到 IE9 和本地的同版本就好了... 一不小心,没刹住车,直接开到 IE10 了...

 

一开始,想想也不会有什么的吧,索性将就了...

一运行,又是一脸懵逼...

 

发现坑三:截图出现了两个很碍眼刺眼的滚动条,也就是 WebBrowser 打开的网页就是有滚动条的

不应该啊,又急着见度娘了,度娘带来的大神都说设置 “webBrowser.ScrollBarsEnabled = false” 就OK。可是这个答案对我的问题是没用的。

 

我想可能就是我把服务的 IE 浏览器更新过头了,应该 IE9 就OK了。我想 “webBrowser.ScrollBarsEnabled = false” 对 IE9 有用,对 IE10 就无效了。

又是 WebBrowser 的问题。

索性不管了 WebBrowser 了,目的是要解决掉滚动条,我就在原网页中的<body>做了一点点修改,修改了样式 “ <body style="overflow:hidden;"> ”,问题也就解决了。

 

总结:

挖坑跳坑,把坑填了,路途中是会学到很多东西的

 

补充一下知识

关于 background-image 和 <img>

 

 

 


 

本文原创作者:小明 

原创文链接:《WebBrowser,挖坑,跳坑,填坑》

posted @ 2017-05-04 15:56  蓝色咖啡屋  阅读(288)  评论(0编辑  收藏  举报
韦小明(email:3301526363@qq.com)