我试图在按钮点击的背景中打开一个标签,类似于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();
以与上述相同的方式工作。
如何在不切换标签的情况下在后台完全打开它?
答案 0 :(得分:0)
//for detect ctrl click
function ctrl_click(_event){
if (_event.ctrlKey) {
alert('ctrl_click');
}
}
//for simulate ctrl click
setTimeout(function(){
var evt = $.Event('click');
evt.ctrlKey = true;
$('#test').trigger(evt);
},3000);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="test" onClick="ctrl_click(event);">CLICK ME WITH CTRL</div>
&#13;
答案 1 :(得分:0)
在纯JavaScript中,您可以使用MouseEvent
:
const a = document.createElement("a");
a.setAttribute("href", "https://www.google.com/");
a.dispatchEvent(new MouseEvent("click", {ctrlKey: true}));