html 我需要使用JavaScript在后台打开一个新窗口,并确保原始窗口仍处于焦点状态

pgvzfuti  于 2022-11-20  发布在  Java
关注(0)|答案(6)|浏览(360)

我用Javascript函数打开了一个窗口:

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

我需要它,一旦新窗口打开,焦点返回到原来的窗口。我该怎么做呢?我把代码放在哪里-在新窗口,还是旧窗口?谢谢!

bbuxkriu

bbuxkriu1#

这就是所谓的“pop-under”(通常是不赞成的...但我离题了)..它应该给予你很多关于谷歌
您可能需要执行以下操作:

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

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

hfsqlsce

hfsqlsce2#

拨打www.example.com后window.open,您可以尝试使用

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

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

ecfdbz9o

ecfdbz9o3#

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

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

但是,我相信第二个窗口是在标签页中打开还是在新窗口中打开取决于您的浏览器设置。
请不要用“pop-unders”来表示邪恶。

093gszye

093gszye4#

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

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(即您当前所在的窗口)
两种方法都可以。

vq8itlhq

vq8itlhq5#

tl;dr -在2022 -ctrl/cmd中,单击按钮和javascript按钮处理程序for循环中的window.open(url, "_blank")将在后台在Chrome中打开多个标签页

我正在寻找2022年的答案,但没有一个答案起作用(我在这里和其他地方都找过了)。我的用例是点击(渐进式)网络应用程序中的一个按钮,它会打开后台选项卡中列表中项目的深层链接(即不是“邪恶”)。
我从来没有想过ctrl/cmd +点击按钮会在后台打开标签页,但它就像用户直接点击锚标签一样--但只有在Chrome中。结合Chrome相对较新的tab grouping feature,这在PWA中非常有用。

const isMozilla =
  window?.navigator?.userAgent?.toString().toLowerCase().includes('firefox') ?? false;
for (let index = 0; index < urls.length; index++) {
  const url = isMozilla ? urls.reverse()[index] : urls[index];
  window.open(url, "_blank");
}

注:在Mozilla上,我使用reverse()数组来获取新创建的选项卡的顺序,这与用户期望的顺序相同。

mzaanser

mzaanser6#

您可以只使用'_self'。它会停留在相同的页面,

window.open(url, '_self');

相关问题