JavaScript弹出的浏览器标签页无法获得焦点

3

我在一个.NET 4.0 Web应用程序中使用这段javascript代码来兼容IE8:

ClientScript.RegisterStartupScript(this.Page.GetType(), "popupOpener", "var popup=window.open('Report.aspx');popup.focus();", true);

这个代码会在新的浏览器选项卡中打开一个.aspx页面,但不会将焦点设置到新的选项卡上。我很想实现这一点,有人知道怎样做吗?

你看过这个吗:https://dev59.com/vnRB5IYBdhLWcg3wFz4g? - xtrem
@Moussa:这个问题似乎涉及新文档是在新标签页中打开还是作为新窗口打开。除此之外,只要JS有一个窗口句柄,它仍然可以控制焦点(以及其他事情)。 - buley
一个按钮创建/格式化报告文档,然后将其存储在会话变量中。然后,此JavaScript打开新的aspx窗口,其中报告文档加载到查看器中。 - tmaurst
在浏览器中打开和聚焦新窗口将取决于浏览器设置,无法被JavaScript覆盖。至于Firefox,您可以在其设置中进行设置。 - Alvin
1个回答

0

并非所有浏览器都支持focus,我认为即使在那些支持的浏览器中也存在一些错误。

尝试在给窗口焦点之前将其模糊。这很奇怪,但过去对某些人有效。

总的来说:

popup_handle.blur();
popup_handle.focus();

针对您的代码:

ClientScript.RegisterStartupScript(this.Page.GetType(), "popupOpener", "var popup=window.open('Report.aspx');popup.blur();popup.focus();", true);

唉...同样的行为。新标签页打开了,但没有获得焦点。 - tmaurst
你可能没有窗口句柄。当你记录console.log时,它会说什么? - buley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接