如何屏蔽弹出式广告web窗口,急急急!!!(100分)

  • 主题发起人 主题发起人 sds
  • 开始时间 开始时间
S

sds

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在编一个网际浏览器,请问如何使用twebbrowser的NewWindow2事件来屏蔽弹出式广告web窗口?
 
我不知道你说的newwindow2是什么,不过有一个方法说不定可以哦!
取得当前说有的窗口的大小,把凡是width<? 或者 height<?的关闭就可以了哦。
一般广告窗口都很小,对不对?
 
现抄一段吧,当初我只做了这一部分就是在beforenavigate之前判断一下
要打开的newwindows的url,如果在黑名单中,则关闭这个东东,完整的例子
看我个人信息中的所提问题吧
procedure Tfrmhtmlbrowser.WebBrowserBeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
item: TdxBarButton;
newitemlink: TdxBarItemLink;
Tag: Integer;
begin
Tag := (Sender as TEmbeddedWB).Tag;
if EnableBacklist then
if BackList.IndexOf(url) <> -1 then
if ConfirmCloseBackList then
begin
if Application.MessageBox('是否关闭该黑名单窗口?', '关闭黑名单窗口', MB_ICONQUESTION + MB_YESNO) = idyes then
begin
//关闭该窗卡
Cancel := True;
closetag := Tag;
delwindowmenu(closeTag);
Timer_closepageex.Enabled := True;
end;
end
else
begin
Cancel := True;
closetag := Tag;
delwindowmenu(closeTag);
Timer_closepageex.Enabled := True;
end;
item := TdxBarButton.Create(Self);
item.Caption := url;
item.hint := url;
item.OnClick := gourl;
newitemlink := GotoUrl.itemlinks.Add;
newitemlink.Item := item;
if PageControl.ActivePage.Tag = Tag then
begin
URLs.Text := URL;
Statusbar.Panels[0].Text := URL;
end;
end; //end WebbrowserNavigate2
 
简单: 在onnewwindow2中,将cancel置为true就可以了
 
To whaoye: 判断窗口大小来确定是否广告窗口不可取,因为有的站点弹出的广告窗口也是
全屏的,如有段时间fanso.com就是.
To honghs: 你这个黑名单如何收集?恐怕总有漏网之鱼吧
To alter: Cancel设为true倒是不会弹出广告窗了,可用户正常的浏览也不行了

我认为有个简单但不很好的方法,因为广告窗口一般都是通过执行活动脚本弹出的,所以
只要把IE安全设置中的活动脚本的执行禁掉就行了。
r.RootKey := HKEY_CURRENT_USER;
if r.OpenKey('/SOFTWARE/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/3',False)
then r.WriteInteger('1400',3); //禁止活动脚本

 
你用过netcaptor没有,黑名单当然要自己添加的啦
 
其实一般的软件都是用honghs的方法,不过不能在beforenavigate里过滤,而应该在newwindow里处理.
完全智能的过滤似乎不可能.
 
alter,netwindow中不行的吧,new的时候没办法得到url啊,如何判断新打开的窗口在不
在黑名单中
 
有个参数ppDisp,不知道你注意到没有?根据Delphi的简单帮助,通过ppDisp接口可以访问到新窗口的TWebBrower控件的接口.
不过,我也正在尝试怎麽样利用这个接口.也许,只有在msdn里面才有详细的说明.
 
procedure Tfor.Web1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
cancel:=true;
end;
 
接受答案了.
 
后退
顶部