使用javascript或jquery模拟ctrl +单击(打开没有焦点的新选项卡)

qde*_*ial 4 javascript jquery

我正在玩jquery事件对象,但我被困在地狱

我阅读了API https://api.jquery.com/category/events/event-object/但它在这里并没有真正起作用,我甚至不确定这是一个很好的领导

你有什么建议(问题是要完全按住ctrl +点击一个链接).我看到一些关于它的帖子,但似乎在最近的浏览器上没有任何效果

非常简单的例子:

<span id="toto">toto</span>
<a href="https://google.fr" id="inANewTab"></a>

// The goal is when I click on #toto, I would like #inANewTab trigger 
// in a new tab without focus. To do that I was thinking
// about replicate a ctrl+click event

$('#toto').click(function(){
  ???
})
Run Code Online (Sandbox Code Playgroud)

Aka*_*cik 6

在纯 javascript 中,您可以使用MouseEvent

document.getElementById("todo").dispatchEvent(new MouseEvent("click", {ctrlKey: true}));
Run Code Online (Sandbox Code Playgroud)

要以编程方式打开一个新选项卡,您可以这样做:

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

  • 这对我来说适用于 Chrome 78,但不适用于 Firefox ESR 68。事实上,如果 ctrlKey 设置为 true,则单击事件在 FF 中完全停止工作。 (3认同)

Sea*_*ins 5

编辑:

jQuery中的Event对象有一个ctrlKey参数,你可以在点击时将其指定为true.

var e = jQuery.Event("click");
e.ctrlKey = true;
$('#id').trigger(e);
Run Code Online (Sandbox Code Playgroud)

参考:jquery触发器ctrl +单击