【问题标题】:How do I double-click on objects using javascript? Do I have to .click() twice?如何使用 javascript 双击对象?我必须 .click() 两次吗?
【发布时间】:2014-05-29 06:16:24
【问题描述】:

我尝试搜索此内容,但出现的唯一结果是双击,而不是如何自动双击某物。 (触发双击。)

我可以单击一次,并尝试这样做两次以“创建”双击但失败了。我假设是因为时间问题,所以我设置了一个计时器来查看我的双击之间有多少时间。

是否有自动双击的方法?我没有使用 jQuery,所以请避免在答案中使用它。

所以我点击使用:

document.getElementyById("somethinbg").click();

我尝试双击:

document.getElementById("something").dblclick(); 

没有成功。

【问题讨论】:

标签: javascript double-click tampermonkey


【解决方案1】:

像这样发送a dblclick event

var targLink    = document.getElementById ("something");
var clickEvent  = document.createEvent ('MouseEvents');
clickEvent.initEvent ('dblclick', true, true);
targLink.dispatchEvent (clickEvent);


你可以see the code in action at jsFiddle

【讨论】:

  • 谢谢布洛克!我发布的命令不是在javascript中定义的吗?
  • 不,不是。有dblclick 事件但没有对应的快捷功能。 PS:由于范围和沙盒问题,您永远不应该尝试使用这些快捷方式,例如 Tampermonkey 脚本中的.click()
  • 您能否对此进行扩展并给出不同的解决方案?
  • 怎么样?阐明。如果需要,请提出新问题。
  • 我的意思是我不太明白你所说的沙盒问题是什么意思,以及你推荐的其他方式,我尝试搜索沙盒但没有成功。无论如何感谢您的回答:)
【解决方案2】:

使用 jquery dblclick 方法,您可以非常轻松地做到这一点。类似的东西。

$("p").dblclick(function(){
   alert("The paragraph was double-clicked.");
});

查看以下链接了解更多信息

http://www.w3schools.com/jquery/event_dblclick.asp

http://api.jquery.com/dblclick/

如果您使用的是 javascript,请查看以下链接。

Javascript Double Click Event

【讨论】:

  • OP 询问如何触发 双击,而不是监听。还指定了仅 JavaScript(无 jQuery)。
  • 谢谢adams,也许我没问清楚,我正在寻找触发它。
【解决方案3】:

document.querySelector("#MyID").dispatchEvent(new MouseEvent("dblclick"))

示例

<h3>press <kbd>Ctrl</kbd></h3>
<p>double click here</p>

<script>
  const targetElem = document.querySelector(`p`)

  targetElem.ondblclick = ()=>console.log("double click")

  document.addEventListener("keydown", (keyboardEvent) => {
    if (keyboardEvent.key === "Control") {
      targetElem.dispatchEvent(new MouseEvent("dblclick"))
    }
  })
</script>

MouseEvent继承:

所以你可以如下进行初始化

new MouseEvent("dbclick", {
screenX: 0, screenY: 0 button: 0, //... // ? MouseEvent itself
bubbles: true, cancelable: true, composed: false, // ? Event
view: window // ? UIEvent
// ... 
})

即MouseEventInit 字典还接受来自 UIEventInit 和 EventInit 字典的字段。


注意 Event.initEvent() 已弃用。使用Event 代替它。

【讨论】:

    【解决方案4】:
    document.getElementById("something").ondblclick = function(){
           alert("The paragraph was double-clicked.");
    }
    

    【讨论】:

    • 不寻找事件伴侣,寻找触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多