Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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
模拟ctrl+;使用javascript或jquery单击(打开一个没有焦点的新选项卡)_Javascript_Jquery - Fatal编程技术网

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

模拟ctrl+;使用javascript或jquery单击(打开一个没有焦点的新选项卡),javascript,jquery,Javascript,Jquery,我正在玩jquery事件对象,但我被卡住了 我阅读了API,但它在这里并没有真正的帮助,我甚至不确定这是否是一个好的线索 你有什么建议吗(问题是按ctrl键并单击链接)。我看到了一些关于它的帖子,但在最近的浏览器上似乎没有任何效果 非常简单的示例: toto //目标是当我点击“toto”时,我想在新的选项卡中触发 //在没有焦点的新选项卡中。要做到这一点,我在想 //关于复制ctrl+click事件 $('#toto')。单击(函数(){ ??? }) 编辑: jQuery中的事件对象有一个c

我正在玩jquery事件对象,但我被卡住了

我阅读了API,但它在这里并没有真正的帮助,我甚至不确定这是否是一个好的线索

你有什么建议吗(问题是按ctrl键并单击链接)。我看到了一些关于它的帖子,但在最近的浏览器上似乎没有任何效果

非常简单的示例:

toto
//目标是当我点击“toto”时,我想在新的选项卡中触发
//在没有焦点的新选项卡中。要做到这一点,我在想
//关于复制ctrl+click事件
$('#toto')。单击(函数(){
???
})
编辑:

jQuery中的事件对象有一个ctrlKey参数,您可以单击将其指定为true

var e = jQuery.Event("click");
e.ctrlKey = true;
$('#id').trigger(e);

参考:

这是一个非jQuery版本,用于模拟键盘事件。这在Chrome(基于WebKit)和Firefox(基于Gecko)中都适用:

或者使用jQuery,您可以通过jQuery的
事件
对象模拟:

jQuery.event.trigger({
  type:  'keypress',
  which: character.charCodeAt(0)
});

在纯javascript中,您可以使用:

document.getElementById("todo").dispatchEvent(new MouseEvent("click", {ctrlKey: true}));
要以编程方式打开新选项卡,可以执行以下操作:

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

可能有一个事件监听器用于
ctrl
keyboard事件,然后在其中有一个click事件来执行某些操作?他需要在单击时触发键盘上的ctrl,而不是check!同样(使用Chrome)thx作为你的答案,也许我的问题不够清楚。我真的不知道如何利用你的答案。我编辑了question@hadesMM在你的函数中,添加我的
:)
如何在特定元素上执行此操作?这不仅对我不起作用,现在也不推荐使用。不幸的是没有。在新选项卡中打开可以使用任何一种方法,但不能在后台使用。我只能假设这是由于阻塞或其他原因造成的,这是一种耻辱,因为我只想为自己的浏览器(代码片段)而不是其他任何人做这件事。我已经看过了类似的问题,但没有一个答案看起来有效了。这在Chrome78中对我有效,但在FirefoxESR68中无效。事实上,如果ctrlKey设置为true,则click事件将完全停止在FF中工作。
document.getElementById("todo").dispatchEvent(new MouseEvent("click", {ctrlKey: true}));
const a = document.createElement("a");
a.setAttribute("href", "https://www.google.com/");
a.dispatchEvent(new MouseEvent("click", {ctrlKey: true}));