Embedded WebBrowser阻止弹出广告、窗口等技术

减小字体 增大字体 作者:佚名  来源:转载  发布时间:2010-12-07 02:19:11

检测弹出窗口是不是自动弹出广告
在TEmbeddedWB控件的OnStatusTextChange事件处理函数中,保存Text参数。如果新窗口不是自动弹出而是由用户点击链接弹出,该参数中会保存新窗口中页面的URL。于是可以通过比较URL来进行判断。
procedure TForm1.wbMainStatusTextChange (ASender: TObject; 
  const Text: WideString); 
begin
  mStatusText := Text; 
end; 

阻止默认会弹出的新窗口
在TEmbeddedWB控件的OnNewWindow3事件触发的函数中,临时取消新窗口的创建,在判断新窗口不是广告以后,由当前窗口中的浏览器控件访问弹出的网页,从而阻止了网页的弹出。
procedure TForm1.wbMainNewWindow3 (ASender: TObject; 
  var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; 
  const bstrUrlContext, bstrUrl: WideString); 
begin
  Cancel:=true; 
  if (bstrUrl = mStatusText) then//用户点击 
  begin
    wbMain.Navigate(bstrUrl); 
  end; 
end;

判断整个网页已读取完毕(排除frame/iframe的影响)
当TEmbeddedWB控件的OnDocumentComplete事件触发时,说明网页已经读取完成;但是如果网页中含有frame/iframe元素,在每个frame/iframe中的网页读取完成时都会触发OnDocumentComplete事件。为了排除这些frame/iframe的干扰,在OnDocumentComplete事件触发时,需要增加一个判断,即判断是不是整个网页完成。
procedure TForm1.wbMainDocumentComplete (ASender: TObject; 
  const pDisp: IDispatch; var URL: OleVariant); 
begin            
  if (wbMain.Application = pDisp) then
  begin
    // TODO: 此处添加需要的代码 
  end; 
end;

本文来自:http://www.cnblogs.com/xuxn/archive/2010/11/28/use-embedded-web-browser-to-block-ads.html

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论