最近在 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.ScrollBarsEnabled = false” 就OK。可是这个答案对我的问题是没用的。
我想可能就是我把服务的 IE 浏览器更新过头了,应该 IE9 就OK了。我想 “webBrowser.ScrollBarsEnabled = false” 对 IE9 有用,对 IE10 就无效了。
又是 WebBrowser 的问题。
索性不管了 WebBrowser 了,目的是要解决掉滚动条,我就在原网页中的<body>做了一点点修改,修改了样式 “ <body style="overflow:hidden;"> ”,问题也就解决了。
挖坑跳坑,把坑填了,路途中是会学到很多东西的
补充一下知识
关于 background-image 和 <img>
本文原创作者:小明
原创文链接:《WebBrowser,挖坑,跳坑,填坑》