首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

怎么在webBrowser中实现window.external的隐藏

2012-05-16 
如何在webBrowser中实现window.external的隐藏?使用VS 2005 VB.NET 开发webBrowser控件,并将其事件进行了

如何在webBrowser中实现window.external的隐藏?

  使用VS 2005 VB.NET 开发webBrowser控件,并将其事件进行了扩展.

  我想将window.external隐身.在HTML加载前能通过execScript来实现对window.external的定义.实现的效果类似在HTML加载的首行加载个
<script type="text/javascript" >
  EWB=window.external;
</script>
  这样的效果,可以通过webBrowser控件执行execScript的话则可以隐藏这个定义,这样在其它的javascript里面直接就可以引用这个EWB对象.

  具体代码execScript执行的语句为 if(typeof(EWB)=='undefined'){EWB=window.external;}

  网上execScript的执行基本都放在DocumentComplete事件中.经过测试确实可以实现.

  但是出现一个新的问题:在frame下面的页面的DocumentComplete事件中执行则会失败.在frame中的页面执行则调用javascript脚本中会出现undefined.的情况.
  但是我在vb.net程序中连续执行.
  ExecuteScript("if(typeof(EWB)=='undefined'){EWB=window.external;}")
  ExecuteScript("alert(typeof(EWB))")
  则会提示EWB的类型为object即被定义了.但是到HTML中调用则又为undefined了.现象比较诡异.
   
  而最新的需求需要在body的oninit事件中调用这个EWB对象,可是EWB的声明在DocumentComplete,先后顺序有冲突.目前经过对webBrowser的事件的拓展增加了BeforeNavigate2和DownloadBegin事件,但是execScript不能在BeforeNavigate2这个事件里面加载.因为这是引用的document对象还是nothing的.而DownloadBegin事件中加入上述语句一样的结果.

  当然这个办法可以通过包含一个.js文件定义,像我这样做貌似有点故弄玄虚.但是俺就想搞一个这样的效果.我想理论上这样的效果应该能实现.

  哪位能帮忙看看应该在哪个事件中(DownloadBegin)执行我这个脚本,或者有什么其它的办法能定义下这个EWB对象(最终不出现在HTML源码中).

最后总结下问题:
  1.execScript为什么到了frame下面的页面DocumentComplete事件中加载会不生效.
  2.最早可以在哪个事件中使用execScript来实现对EWB=window.external的定义.



[解决办法]
webbrowser做不了,需要用代理服务器修改网页数据。

热点排行