多标签浏览器,遇到页面有window.opener 新窗口有bug,求解决办法

ccj188 2010-06-17 02:08:18
我用 ExtendedWebBrowser 控件写的一个多标签浏览器,
在解决弹出新窗口时解决了99%的问题,但是还有一个辣手的问题没有解决,求解。
问题:当浏览者重a页面到b页面时,a页面通过
<script language="Javascript">
window.open(' dmain.htm','CRM','toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500,left=0,top=0');
window.opener=null;
window.open("","_self");
window.close();
</script>
打开b页面时,打开b页面一切正常,
但是,如果b页面里有一个权限验证的代码,那就出问题了,如b页面有如下验证代码:
<script language="javascript">
if(typeof(opener) == "undefined")
{
alert("禁止非法进入页面!");
window.opener=null;
window.open("","_self");
window.close();
}
</script>

b页面打开是会提示“禁止非法进入页面”。

请高人指点一下,我测试了网上很多代码都无法解决这个问题:
我做了个测试包,下载地址:http://www.ahtxh.net/soft/browser.rar

测试包中,在c#代码中打开logo.htm页面,就有连接了。

c#代码中:
void webbrowser_StartNewWindow(object sender, BrowserExtendedNavigatingEventArgs e)
{
CreateNewTabPage(e.Url.ToString());
e.AutomationObject = CurrentWebBrowser.Application;
e.Cancel = true;
}

其中 e.AutomationObject = CurrentWebBrowser.Application; 这句就是对 window.opener 起作用的,但是我这里没有其他作用,不知道哪里错了,请高手处理下,
这个感激不尽。
...全文
304 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccj188 2010-06-18
  • 打赏
  • 举报
回复
等人解
xk1126 2010-06-17
  • 打赏
  • 举报
回复
帮顶,带学习了~!~
ccj188 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 army369168520 的回复:]
引用 2 楼 army369168520 的回复:
在webBrowser1_NewWindow_1事件中写,可以防止弹出新窗口
e.Cancel = true;
WebBrowser wb = showLinkAddress();
wb.Navigate((sender as WebBrowser).Document.ActiveElement.GetAttribute("href"))……
[/Quote]

现在是页面验证通不过。
army369168520 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 army369168520 的回复:]
在webBrowser1_NewWindow_1事件中写,可以防止弹出新窗口
e.Cancel = true;
WebBrowser wb = showLinkAddress();
wb.Navigate((sender as WebBrowser).Document.ActiveElement.GetAttribute("href"));
[/Quote]
private WebBrowser showLinkAddress()
{
TabPage page = new TabPage();
this.tabControl1.TabPages.Add(page);
WebBrowser wb = new WebBrowser();
page.Controls.Add(wb);
wb.Dock = DockStyle.Fill;
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted_1);
wb.NewWindow += new CancelEventHandler(webBrowser1_NewWindow_1);
return wb;
}
army369168520 2010-06-17
  • 打赏
  • 举报
回复
在webBrowser1_NewWindow_1事件中写,可以防止弹出新窗口
e.Cancel = true;
WebBrowser wb = showLinkAddress();
wb.Navigate((sender as WebBrowser).Document.ActiveElement.GetAttribute("href"));
水哥阿乐 2010-06-17
  • 打赏
  • 举报
回复
帮 顶
py820 2010-06-17
  • 打赏
  • 举报
回复
顶,学习中。。。

110,534

社区成员

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

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

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