在 Chrome 中使用目标“_blank”打开 window.open
Posted
技术标签:
【中文标题】在 Chrome 中使用目标“_blank”打开 window.open【英文标题】:window.open with target "_blank" in Chrome 【发布时间】:2012-06-17 15:41:27 【问题描述】:我有一个小的 javascript 函数,可以在新标签页中打开一个 url:
function RedirectToPage(status)
var url = 'ObjectEditor.aspx?Status=' + status;
window.open(url , '_blank');
当通过单击按钮调用客户端时,这始终有效,即使在 chrome 中也是如此。 但是在 Chrome 中,当使用
从服务器端(!)调用它时它将不起作用ScriptManager.RegisterClientScriptBlock()
在 Firefox 和 IE 中,它会在新选项卡中打开 url,但 chrome 会在新窗口中打开 url。有什么办法可以强制 Chrome 在新标签页中打开它?
【问题讨论】:
我认为这是 Chrome 特定的配置。你不能通过脚本来控制它。 【参考方案1】:这是 chrome 中的设置。您无法控制浏览器如何解释目标_blank
。
【讨论】:
但是,如果单击按钮时从客户端调用该函数,为什么 Chrome 会在新选项卡中打开 url?它只是在使用服务器端方法调用时不起作用。 可能是弹窗拦截。许多浏览器会禁止在任何情况下打开新窗口,但会允许在鼠标单击事件的最终结果中生成新窗口。 浏览器具有内部变量,这些变量指示有关调用方式和位置(调用堆栈顶部)的信息,例如浏览器将根据调用是否源自特定事件(加载事件、点击事件和异步回调)来决定在单独的窗口或新选项卡中处理弹出窗口的打开(或阻止)。【参考方案2】:"_blank" 不保证是新标签页或窗口。每个浏览器的实现方式不同。
但是,您可以将任何东西放入目标中。我通常只会说“_tab”,而我所知道的每个浏览器都会在新标签页中打开它。
请注意,这意味着它是一个命名目标,因此如果您尝试打开 2 个 URL,它们将使用相同的选项卡。
【讨论】:
【参考方案3】:window.open(skey, "_blank", "toolbar=1, scrollbars=1, resizable=1, , comcopy">这不能回答问题。【参考方案4】:
您不能这样做,因为您无法控制 Chrome 打开其窗口的方式
【讨论】:
【参考方案5】:
正如丹尼斯所说,您无法控制浏览器选择如何处理 target=_blank。
如果您想知道不一致的行为,可能是弹出窗口阻止。许多浏览器会禁止在任何情况下打开新窗口,但会允许在鼠标单击事件的最终结果中生成新窗口。
【讨论】:
以上是关于在 Chrome 中使用目标“_blank”打开 window.open的主要内容,如果未能解决你的问题,请参考以下文章
WKWebview 在 macOS 上的默认浏览器中打开目标 =“_blank”链接
chrome window.open(url '_blank') 打开新窗口