quirks模式下的window.open也会将后续页面更改为怪异模式

时间:2015-10-06 14:00:56

标签: javascript vb.net quirks-mode

我正在使用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

2 个答案:

答案 0 :(得分: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>

&#34;返回false;&#34;添加我认为将解决您的问题。 这是为了防止浏览器跟踪实际链接。

另一种写这个的方法是:

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>

答案 1 :(得分: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();会做的那样但是在这种情况下我无法使用它所以我想出了这个替代品)并且由于第一页有一个元标记来打开页面即边缘,一切看起来都不错。

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 :我终于找到了问题所在...实际上,response.write是我的第一页进入怪癖模式并修复它的原因我使用了Page.RegisterClientScriptBlock之类的吼叫打开我的窗户,一切都像它应该的那样

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