2015-10-06 97 views
2

我使用window.open打开一个新的窗口从代码后面到以怪癖模式运行的页面。但是,当我点击这个按钮进入第二页时,它也会改变第一页模式。window.open在怪癖模式也改变后续页面的怪癖模式

这是我写的一段代码:

Dim url1 As String = "MYURL.html" 
Response.Write("<script>") 
Response.Write("newwindow=window.open('" + url1 + "','_blank');") 
Response.Write("newwindow.focus()") 
Response.Write("</script>") 

有没有办法解决这个问题呢?

注意:我的目标页面确实应该以怪癖模式运行,所以这不是我可以忽略的部分,我必须使用在服务器上运行的按钮来完成此操作,所以我无法实现与其目标设置为_blank的定位标记。

回答

1

最后,我找到了一种方法,但是这是一个有点工作围绕但它会做现在的工作

Dim url1 As String = "MYURL.html" 
Response.Write("<script>") 
Response.Write("newwindow=window.open('" + url1 + "','_blank');") 
Response.Write("newwindow.focus()") 
Response.Write("window.open('" + HttpContext.Current.Request.Url.AbsoluteUri + "','_self')") 
Response.Write("</script>") 

下面的行的代码会得到相同的网址,并在同一个标​​签中打开它(比如location.reload();会做的,但我不能在这种情况下使用它,所以我想出了这个替代品),并且第一页有一个meta标签可以打开页面在ie边缘一切似乎都很好。

Response.Write("window.open('" + HttpContext.Current.Request.Url.AbsoluteUri + "','_self')") 

编辑: 如果弹出窗口拦截,阻止网站仍然在第一页会去怪异模式..但与它下面的代码将提醒用户解决问题如果弹出式窗口拦截是关闭它显示了第二页

Dim url1 As String = "MYURL.html"  
Response.Write("<script>") 
Response.Write("newwindow=window.open('" + url1 + "','_blank');") 
Response.Write("if(!newwindow || newwindow.closed || typeof newwindow.closed=='undefined'){") 
Response.Write("alert('please disable pop-up blocker for this site');") 
Response.Write("}") 
Response.Write("else{") 
Response.Write("newwindow.focus();") 
Response.Write("}") 
Response.Write("window.open('" + HttpContext.Current.Request.Url.AbsoluteUri + "','_self')") 
Response.Write("</script>") 

编辑2:我finall Ÿ发现问题是什么...实际response.write是我的第一页转到怪癖模式,并修复它的原因我用Page.RegisterClientScriptBlock像波纹管打开我的窗口,一切工作就像它应该

Page.RegisterClientScriptBlock("", "<script>window.open('" & MYURL & "', '_blank', 'toolbar=no');</script>") 
2

试试这个:

Dim url1 As String = "MYURL.html" 
Response.Write("<script>") 
Response.Write("function fen_pop(url) {") 
Response.Write("newwindow=window.open('" + url + "','_blank');") 
Response.Write("if (window.focus) {newwindow.focus();}") 
Response.Write("newwindow.focus();") 
Response.Write("return false;") 
Response.Write("}") 
Response.Write("</script>") 
在HTML

使用链接:

<a href="#" onclick="return fen_pop('MYURL.html')">Link to popup</a> 

的 “返回false;”补充,我认为将解决您的问题。 这是为了防止浏览器跟踪实际的链接。


另一种方式来写是这样的:

Response.Write("<script>") 
Response.Write("function fen_pop(url) {") 
Response.Write("newwindow=window.open('" + url + "','_blank');") 
Response.Write("if (window.focus) {newwindow.focus();}") 
Response.Write("newwindow.focus();") 
Response.Write("}") 
Response.Write("</script>") 

在HTML页面:

<a href="#" onclick="fen_pop('MYURL.html'); return false;">Link to popup</a> 
+0

谢谢你的回答......我真的应该在一个按钮上使用这段代码,所以我在上面的代码上试了一次,但是“return false”阻止了新窗口被打开,所以第一页只刷新了,怪癖模式 – NikiUsefi

+0

nop,首先调用该函数打开窗口。并在返回false后阻止源网页,重试它。 – Mimouni

+0

我再次尝试,但它仍然有相同的效果,我认为这是因为它在服务器上运行发生...我不能添加“fen_pop('MYURL.html');返回false;”直接在按钮的onclick属性中,因为它现在还不存在,如果我在后面的代码中写入这个返回false而没有fen_pop函数,它仍然会有相同的效果 – NikiUsefi