当打开中国雅虎首页("http://cn.yahoo.com/")后,WebBrowser后退状态激活,网址是:"http://cdn.tanx.com/t/acookie/acbeacon2.html"不仅是首页,雅虎中多数网页在加载完后都会留下"http://cdn.tanx.com/t/acookie/acbeacon2.html"的后退记录。页且这些网页之中没有包含frame或iFrame。我尝试访问"http://cdn.tanx.com/t/acookie/acbeacon2.html",结果是一片空白。但如果让WebBrowser执行后退,它并不会显示空白,而是停留在当前页面,难道它预知道了后退结果?求解释。

解决方案 »

  1.   

    具体你的疑问是什么呢?你的最后一个问题,很简单。那是 if-modified-since 原因。不过前边的描述,你是不是也有什么疑问要说呢?
      

  2.   

    楼上大哥好:我实际问题是:WebBrowser控件在重缓时先重绘背景,然后才绘制内容。导致了闪烁。解决办法是处理WM_ERASEBKGND消息返回1,这样就去除了白色背景重绘过程。但现在遇到这样一种情况:当WebBrowser中的内容前进到另一页时(比如网站中常见的查看图片之"下一张",不打开新窗口)。此时url发生了变化,WebBrowser出现了明显的闪烁(也是先用白色添充)。但这种闪烁不同于前面所述情况。因为我通过spy++并未发现有WM_ERASEBKGND。目前还没有发现哪种浏览器能克服这种情况。有什么办法让WebBrowser在转至下一页时不用白色添充窗口呢?
    我试图捕获OnNavigating然后分析url下载其源码手动:Document.Write(源码)e.Cancel = true;
    以此来避免出现白色背景。这样做肯定要自己来设置前进后退,所以有了贴子开头问题。经测试,Document.Write失败了,虽然源码下载成功,但不知为啥网页显示一片空白,啥也没画上去。可能和我使用了IE异步协议有关。总之这种办法太麻烦。最好能找到简单办法来防止前面所说的白色绘制。