Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS在后台打开选项卡/simulate ctrl单击_Javascript_Jquery_Browser_Tabs_Mouseevent - Fatal编程技术网

Javascript JS在后台打开选项卡/simulate ctrl单击

Javascript JS在后台打开选项卡/simulate ctrl单击,javascript,jquery,browser,tabs,mouseevent,Javascript,Jquery,Browser,Tabs,Mouseevent,我正在尝试在按钮单击的背景中打开一个选项卡,类似于ctrl-click的工作方式。我试着用下面的方法模拟一个ctrl点击,它可以在一个新的选项卡中打开,但不能在后台打开。它将切换到新选项卡。这对我不起作用,因为这个选项卡上的流程需要一点时间才能运行,我不希望我的用户盯着空白选项卡看那么久 以下是我尝试过的: 模拟Ctrl键单击: var a = document.createElement('a'); a.href = 'http://www.google.com'; var evt = doc

我正在尝试在按钮单击的背景中打开一个选项卡,类似于
ctrl-click
的工作方式。我试着用下面的方法模拟一个
ctrl点击
,它可以在一个新的选项卡中打开,但不能在后台打开。它将切换到新选项卡。这对我不起作用,因为这个选项卡上的流程需要一点时间才能运行,我不希望我的用户盯着空白选项卡看那么久

以下是我尝试过的:

模拟Ctrl键单击:

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();
工作原理与上述相同

如何在不切换选项卡的情况下在后台完全打开此文件?

//要检测ctrl,请单击
函数ctrl\u单击(\u事件){
如果(_event.ctrlKey){
警报(“ctrl_单击”);
}
}
//对于“模拟ctrl”,请单击
setTimeout(函数(){
var evt=$.Event('click');
evt.ctrlKey=真;
$('测试')。触发器(evt);
},3000);


在纯javascript中使用CTRL键单击我,您可以使用:

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

这不会在后台选项卡中打开。另外,当将.trigger与上面的代码一起使用时,我得到一个错误,即a.trigger不是一个函数。我给出了一个使用CTRL+CLICK的简单示例。它的作品。也许这不是你所需要的…这不是问题所描述的,但感谢你尝试找到解决方案?真的觉得如果没有恶意,你几乎不可能想到一个你需要它的案例…@BojidarStanchev我只是想避免打开标签,他们仍然会看到下载发生。许多网站都是这样做的,你点击下载,然后只看到一个下载开始,没有切换标签或页面。