环境:VS2005 C# winForm XP IE8以我经验,两种情况可以产生newWindow3事件:
1.点击网页中超链接。
2.JS执行window.open第一种情况下,将Cancel赋true就可以取消导航。第二种情况则不行,你可以选择自己打开这个窗口,如果你不打开,那么IE(默认浏览器)会替你打开,Cancel赋true也没用。(不信你试试:http://v.shentime.com/w/41aos0R3qe.html)为了"屏蔽"弹出窗口,我采取办法是用一个隐藏的webbrowser来打开它,这样视觉上看不见了,但如果弹出窗口有声音,还是能听见。更糟糕的是,有些网页内部响应了onunload事件,在网页关闭时再打开一个网页。这种行为纯粹就是赤裸裸的广告甚至非法行为了。而且我目前没有发现任何方法可以捕获并终止它,newWindow3事件也不被触发了。请问,如果让webBrowser禁用js,是否网页就不会再执行onunload事件函数?如果可以,小弟求一个webBrowser禁用js的示例代码。
1.点击网页中超链接。
2.JS执行window.open第一种情况下,将Cancel赋true就可以取消导航。第二种情况则不行,你可以选择自己打开这个窗口,如果你不打开,那么IE(默认浏览器)会替你打开,Cancel赋true也没用。(不信你试试:http://v.shentime.com/w/41aos0R3qe.html)为了"屏蔽"弹出窗口,我采取办法是用一个隐藏的webbrowser来打开它,这样视觉上看不见了,但如果弹出窗口有声音,还是能听见。更糟糕的是,有些网页内部响应了onunload事件,在网页关闭时再打开一个网页。这种行为纯粹就是赤裸裸的广告甚至非法行为了。而且我目前没有发现任何方法可以捕获并终止它,newWindow3事件也不被触发了。请问,如果让webBrowser禁用js,是否网页就不会再执行onunload事件函数?如果可以,小弟求一个webBrowser禁用js的示例代码。
解决方案 »
- 明天交作业,求大神帮助
- C# 如何把RichTextBox保存成Word文档
- 关于存在外键约束的表的提交问题
- smartphone 上的日历界面应该怎样写?
- 关于C#在WINFORM里操作EXCEL的问题,我弄了一天都没弄出来,着急......
- VS2007 Beta版本已经发布啦!下载地址
- dataGrid数据导出Excel,求高手拿走金币~!!!
- 使用C#制作的C/S结构的软件,在启动项里进行随系统的启动而启动,但是出问题了!在线等待!解决立马给分!
- 看了 Petshop 3.0 几个文件 , 如 DataProtector.cs , 信心一下子全没有了,太难懂了 , 高手 指点 !!! up 有分 ----
- 请问哪里有C#的源代码下载?
- 请教事件注册的语法
- C# wpf控件的排列
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Ricciolo.PaperBoy.UI.Interop;namespace Ricciolo.PaperBoy.UI
{
[ComVisible(true)]
public class WebBrowserController : IOleClientSite
{ private WebBrowser webBrowser; private const int DISPID_AMBIENT_DLCONTROL = -5512;
private bool clientSiteSet = false; public WebBrowserController(WebBrowser webBrowser)
{
this.webBrowser = webBrowser;
this.webBrowser.Navigating += new WebBrowserNavigatingEventHandler(webBrowser_Navigating);
} void webBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
// Only first time
if (!clientSiteSet)
{
this.SetClientSite();
clientSiteSet = true;
}
} public void SetClientSite()
{
((IOleObject)webBrowser.ActiveXInstance).SetClientSite(this);
((IOleControl)webBrowser.ActiveXInstance).OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL);
} [DispId(DISPID_AMBIENT_DLCONTROL)]
public int setFlags()
{
Debug.WriteLine("setFlags");
//return 0;
return (int)(DLCTL.SILENT | DLCTL.FORCEOFFLINE | DLCTL.NO_BEHAVIORS | DLCTL.NO_CLIENTPULL | DLCTL.NO_DLACTIVEXCTLS | DLCTL.NO_FRAMEDOWNLOAD | DLCTL.NO_JAVA | DLCTL.NO_RUNACTIVEXCTLS | DLCTL.NO_SCRIPTS);
} #region IOleClientSite int IOleClientSite.SaveObject()
{
return 0;
} int IOleClientSite.GetMoniker(int dwAssign, int dwWhichMoniker, out object moniker)
{
moniker = null;
return 0;
} int IOleClientSite.GetContainer(out IOleContainer container)
{
container = null;
return 0;
} int IOleClientSite.ShowObject()
{
return 0;
} int IOleClientSite.OnShowWindow(int fShow)
{
return 0;
} int IOleClientSite.RequestNewObjectLayout()
{
return 0;
} #endregion
}
}
”
这时候应该会有新的进程出现,找到并且Kill掉。