window.open 在怪癖模式下也会将后续页面更改为怪癖模式
window.open in quirks mode also changes subsequent page to quirks mode
我正在使用 window.open 打开一个新的 window 从代码隐藏到一个 运行 处于怪癖模式的页面。但是,当我单击此按钮转到第二页时,它也会更改第一页模式。
这是我写的一段代码:
Dim url1 As String = "MYURL.html"
Response.Write("<script>")
Response.Write("newwindow=window.open('" + url1 + "','_blank');")
Response.Write("newwindow.focus()")
Response.Write("</script>")
有办法解决这个问题吗?
注意:我的目标页面确实应该 运行 处于怪癖模式,所以这不是我可以忽略的部分,我必须使用位于 运行 的按钮来完成此操作服务器,所以我无法使用目标设置为 _blank
.
的锚标记实现相同的效果
试试这个:
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 中使用 link :
<a href="#" onclick="return fen_pop('MYURL.html')">Link to popup</a>
添加的 "return false;" 我认为可以解决您的问题。
这是为了防止浏览器遵循实际的 link.
另一种写法是:
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>
最后我找到了一种方法,但这有点变通,但它现在可以完成工作
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>")
代码下面的行会得到相同的 url 并在同一个选项卡中打开它(就像 location.reload();
会做的那样,但我不能在这种情况下使用它所以我来了使用这个替代品)并且因为第一页有一个元标记可以在 ie edge 中打开页面,所以一切看起来都很好。
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 像下面那样打开我的 window 并且一切正常
Page.RegisterClientScriptBlock("", "<script>window.open('" & MYURL & "', '_blank', 'toolbar=no');</script>")
我正在使用 window.open 打开一个新的 window 从代码隐藏到一个 运行 处于怪癖模式的页面。但是,当我单击此按钮转到第二页时,它也会更改第一页模式。
这是我写的一段代码:
Dim url1 As String = "MYURL.html"
Response.Write("<script>")
Response.Write("newwindow=window.open('" + url1 + "','_blank');")
Response.Write("newwindow.focus()")
Response.Write("</script>")
有办法解决这个问题吗?
注意:我的目标页面确实应该 运行 处于怪癖模式,所以这不是我可以忽略的部分,我必须使用位于 运行 的按钮来完成此操作服务器,所以我无法使用目标设置为 _blank
.
试试这个:
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 中使用 link :
<a href="#" onclick="return fen_pop('MYURL.html')">Link to popup</a>
添加的 "return false;" 我认为可以解决您的问题。 这是为了防止浏览器遵循实际的 link.
另一种写法是:
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>
最后我找到了一种方法,但这有点变通,但它现在可以完成工作
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>")
代码下面的行会得到相同的 url 并在同一个选项卡中打开它(就像 location.reload();
会做的那样,但我不能在这种情况下使用它所以我来了使用这个替代品)并且因为第一页有一个元标记可以在 ie edge 中打开页面,所以一切看起来都很好。
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 像下面那样打开我的 window 并且一切正常
Page.RegisterClientScriptBlock("", "<script>window.open('" & MYURL & "', '_blank', 'toolbar=no');</script>")