javascript - JS 在后台打开选项卡/模拟 ctrl-click

标签 javascript jquery browser tabs mouseevent

我正在尝试通过单击按钮在后台打开一个选项卡,类似于 ctrl-click 的工作方式。我尝试通过以下方式模拟 ctrl-click,它设法在新选项卡中打开,但不会在后台打开。它会切换到新选项卡。这对我来说不起作用,因为此选项卡上的进程需要一点时间才能运行,而且我不希望我的用户盯着空白选项卡那么长时间。

这是我尝试过的:

模拟 Ctrl-Click:

var a = document.createElement('a');
a.href = 'http://www.google.com';
var evt = document.createEvent('MouseEvent');
evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
a.dispatchEvent(evt);

这会打开一个新选项卡并将焦点更改到新选项卡,即使 ctrlKey 选项设置为 true。

更改窗口焦点

var a = document.createElement('a');
a.href = 'http://www.google.com';
var evt = document.createEvent('MouseEvent');
evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
a.dispatchEvent(evt);
window.focus();

工作方式与上面相同。

如何让它在后台完全打开而无需切换选项卡?

最佳答案

在纯 JavaScript 中,您可以使用 MouseEvent为此:

const a = document.createElement("a");
a.setAttribute("href", "https://www.google.com/");
a.dispatchEvent(new MouseEvent("click", {ctrlKey: true}));

关于javascript - JS 在后台打开选项卡/模拟 ctrl-click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46819883/

相关文章:

javascript - jQuery 不允许在输入字段中输入字母

javascript - 这些语句在 CSS(twitter-Bootstrap)中是什么意思?

javascript - 在jquery中获取子字符串时出现问题

javascript - 我可以将 JavaScript 变量传递到另一个浏览器窗口吗?

javascript - 对 Javascript 文件进行版本控制以防止不必要的缓存清除

javascript - 如何在 laravel Blade 模板中包含与渲染文件相对应的 js 文件?

javascript - Chrome 浏览器版本 72.0.3626.96 错误触发<输入类型 ="file"> 从 javascript 函数单击(文件选择对话框)

php - 仅向用户显示一次警报

jquery - fork jQuery 以将其内置组件之一 fork 为插件?

xml - 使用浏览器转换XML时,是否可以通过URL向XSLT传递参数?