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

时间:2017-10-18 21:56:09

标签: 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();

以与上述相同的方式工作。

如何在不切换标签的情况下在后台完全打开它?

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:0)

在纯JavaScript中,您可以使用MouseEvent

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