我需要在后台用 JavaScript 打开一个新窗口,并确保原来的窗口仍然是焦点

IT技术 javascript html
2021-01-13 07:10:12

我有一个使用 Javascript 函数打开的窗口:

function newwindow() 
{ 
window.open('link.html','','width=,height=,resizable=no'); 
}

我需要的是,一旦新窗口打开,焦点就会返回到原始窗口。我怎样才能做到这一点?我应该把代码放在哪里 - 在新窗口中还是在旧窗口中?谢谢!

4个回答

这被称为“弹出窗口”(并且通常不赞成......但我离题了......它应该给你很多关于谷歌的信息

您可能想要执行以下操作:

var popup = window.open(...);
popup.blur();
window.focus();

哪个应该将焦点设置回原始窗口(未经测试 - 从谷歌捏取)。某些浏览器可能会阻止此技术。

弹出窗口拦截器取得了一些进展。我对浏览器会阻止这种技术并不感到惊讶 - 它几乎总是用于邪恶。
2021-03-19 07:10:12
我尝试使用 blur() 东西,但它在 Firefox 中效果不佳,所以我想这应该会更好 - 我只是不确定如何返回原始窗口。我也看到了一些关于 window.opener.focus() = 有谁知道我会如何使用它?
2021-03-20 07:10:12
@DemvenWeir - 现在很可能被浏览器阻止了。
2021-04-05 07:10:12
大多数网站都在讲述在后台打开新窗口的相同技巧,但它们都不起作用。从 JavaScript/jQuery 等任何其他技巧可以做到这一点。
2021-04-06 07:10:12

调用window.open后,您可以尝试使用

window.resizeTo(0,0); 
window.moveTo(0,window.screen.availHeight+10);

这种方式不能真正在后台打开窗口,但以类似的方式工作。Chrome 工作正常,没有尝试其他浏览器。

@tazo 即使您不拥有该页面,您也可以使用 close() ,您只需在打开窗口时将窗口保存在变量中 w = window.open(...); .... w.close();
2021-04-09 07:10:12
哇,天才。此外,您也可以window.close();在该弹出页面中使用(如果您拥有该页面)。
2021-04-10 07:10:12

如果Albert 的解决方案对您不起作用,并且您实际上希望窗口可见,但要在当前窗口后面打开,您可以尝试在打开窗口中打开一个新选项卡并立即关闭它,这将使焦点回到开门窗。

window.open('link.html','','width=,height=,resizable=no');  
window.open().close();

但是,我相信第二个窗口是在选项卡中打开还是在新窗口中打开取决于您的浏览器设置。

请不要将“pop-unders”用于邪恶。

您可以使用“模糊”或“聚焦”来执行所需的操作。

“模糊”

function newwindow()  
{  
    var myChild= window.open('link.html','','width=,height=,resizable=no');  
    myChild.blur();
} 

“重点”

function newwindow()  
{  
    window.open('link.html','','width=,height=,resizable=no');  
    window.focus();
} 

将代码放在您的 parentWindow(即您现在所在的窗口)中

两者都会起作用。

它在 FireFox 中对我有用,您观察到什么类型的问题。谢谢。
2021-03-16 07:10:12
你是对的 - 不过不确定代码是否能在 Chrome 中工作。我会试试的 - 非常感谢!!
2021-03-30 07:10:12