关于C# Winform中使用WebBrowser打开新页面的问题

CallMe丶学渣 2018-08-23 05:48:02
WebBrowser加载同一个网站,同一个a标签点击事件,为什么在有的电脑上调用NewWindow3,有的电脑调用NewWindow2
代码如下:


(this.WBser.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += FormMain_NewWindow3;
(this.WBser.ActiveXInstance as SHDocVw.WebBrowser).NewWindow2 += FormMain_NewWindow2;


/// <summary>
/// 打开的界面打开新界面
/// </summary>
/// <param name="ppDisp"></param>
/// <param name="Cancel"></param>
private void FormMain_NewWindow2(ref object ppDisp, ref bool Cancel)
{
FormNewWindow newForm = new FormNewWindow();
ppDisp = newForm.WBSerNew .ActiveXInstance;
newForm.Show();
}

/// <summary>
/// 主页面打开新界面
/// </summary>
/// <param name="ppDisp"></param>
/// <param name="Cancel"></param>
/// <param name="dwFlags"></param>
/// <param name="bstrUrlContext"></param>
/// <param name="bstrUrl"></param>
private void FormMain_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl)
{
Cancel = true;
this.WBser.Navigate(bstrUrl);
}



...全文
682 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
CallMe丶学渣 2018-08-24
  • 打赏
  • 举报
回复
另外附上相关参考资料:
修改IE浏览器内核版本
https://blog.csdn.net/herogui/article/details/51982474

官方对于NewWindows3的解释
https://msdn.microsoft.com/en-us/library/Aa768337

关键解决我这个问题的帖子
https://social.msdn.microsoft.com/Forums/vstudio/en-US/8c43c6f5-4e9f-4491-8219-1b0eeb7b225b/wpf-webbrowser-control-on-x64-machines-launches-new-ie-window-instead-of-staying-inside-of-control?forum=wpf
CallMe丶学渣 2018-08-24
  • 打赏
  • 举报
回复
引用 11 楼 xuzuning 的回复:
NewWindow3 是 IE6 加入的,所以不存在版本问题
现在还有人在用 IE5 或 IE5.5 的吗?



恩,不是版本问题。
xuzuning 2018-08-24
  • 打赏
  • 举报
回复
NewWindow3 是 IE6 加入的,所以不存在版本问题
现在还有人在用 IE5 或 IE5.5 的吗?
mirrorspace 2018-08-24
  • 打赏
  • 举报
回复
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
CallMe丶学渣 2018-08-24
  • 打赏
  • 举报
回复
结贴!


昨晚网上查的资料,今天试了下,果然都走NewWindow3 这个事件了。

此贴完结!感谢各位回复,谢谢!
CallMe丶学渣 2018-08-24
  • 打赏
  • 举报
回复
引用 7 楼 enaking 的回复:
对的,跟ie版本有关系,默认是ie6。


谢回复!
跟IE版本没关系,我已经修改了注册表指定内核版本了。
enaking 2018-08-24
  • 打赏
  • 举报
回复
对的,跟ie版本有关系,默认是ie6。
CallMe丶学渣 2018-08-24
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
[quote=引用 3 楼 pengfeif 的回复:]
[quote=引用 1 楼 caozhy 的回复:]
不同电脑上的ie的版本不同。webbrowser只是对ie的包装


谢回复!
IE版本一致,目前怀疑.net framework 版本问题,需要测试一下[/quote]

有没有安装第三方的浏览器,注意我说的是ie内核版本,也就是shdocvw.dll和ieframe.dll的版本,而不是ie这个软件的版本[/quote]

在注册表里面指定了内核版本为IE11,Com控件版本是不是跟.net framework版本有关?
我一会儿装上试试看
CallMe丶学渣 2018-08-24
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
NewWindow3 事件在 NewWindow2 事件之前发生
如果流程发生了变化(NewWindow2未出现),那就是 NewWindow3 响应程序做了特殊处理

一般说,拦截广告窗口是在 NewWindow3 中进行的

WebBrowser 是 IE 的核心部件,你对 IE 的任何设置(包括安装插件)都会影响到 WebBrowser 的行为


谢回复!
用代码调试的时候,可以看到断点直接走到NewWindow2 里面的,不知道底层是什么情况。

如果是IE插件的问题,我找电脑测试也是随机的,6台电脑(两个win7,四个win10),一个win7,三个win10可以正常跳转,剩下俩台的就不行……很闹心
threenewbee 2018-08-24
  • 打赏
  • 举报
回复
引用 3 楼 pengfeif 的回复:
[quote=引用 1 楼 caozhy 的回复:]
不同电脑上的ie的版本不同。webbrowser只是对ie的包装


谢回复!
IE版本一致,目前怀疑.net framework 版本问题,需要测试一下[/quote]

有没有安装第三方的浏览器,注意我说的是ie内核版本,也就是shdocvw.dll和ieframe.dll的版本,而不是ie这个软件的版本
CallMe丶学渣 2018-08-24
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
不同电脑上的ie的版本不同。webbrowser只是对ie的包装


谢回复!
IE版本一致,目前怀疑.net framework 版本问题,需要测试一下
xuzuning 2018-08-24
  • 打赏
  • 举报
回复
NewWindow3 事件在 NewWindow2 事件之前发生
如果流程发生了变化(NewWindow2未出现),那就是 NewWindow3 响应程序做了特殊处理

一般说,拦截广告窗口是在 NewWindow3 中进行的

WebBrowser 是 IE 的核心部件,你对 IE 的任何设置(包括安装插件)都会影响到 WebBrowser 的行为
threenewbee 2018-08-23
  • 打赏
  • 举报
回复
不同电脑上的ie的版本不同。webbrowser只是对ie的包装

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧