【问题标题】:Simulating click with javascript on document在文档上使用 javascript 模拟点击
【发布时间】:2011-02-22 20:55:05
【问题描述】:

是否可以使用 javascript 模拟对网页的点击,但不定义特定元素,而只是指定文档?

我本来想做这样的事情,如果该位置恰好有一个链接,那么这将被按下:

function simulateClick(x, y) 
{
    var evt = window.createEvent("MouseEvents");
    evt.initMouseEvent("click", true, true, window,
        x, y, x, y, 1, false, false, false, false, 0, null);

    window.dispatchEvent(evt);
}

【问题讨论】:

    标签: javascript layout html


    【解决方案1】:

    window.dispatchEvent 应该可以解决问题。

    <script>
    function simulateClick() {
      var evt = document.createEvent("Events");
      evt.initEvent("click", true, true);
      window.dispatchEvent(evt);
    }
    addEventListener('click',function(){alert('test');},false);
    </script>
    <button onclick="simulateClick();">Go</button>
    

    或者...带有额外的 MouseEvents 信息:

    <script>
    function simulateClick() {
      var evt = document.createEvent("MouseEvents");
      evt.initMouseEvent("click", true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null);
      window.dispatchEvent(evt);
    }
    addEventListener('click',function(){alert('test');},false);
    </script>
    <button onclick="simulateClick();">Go</button>
    

    当点击button 时,上述示例将导致在window 上模拟点击。单击时将事件侦听器添加到windowalert,因此单击button 将间接触发alert

    更多信息:http://www.howtocreate.co.uk/tutorials/javascript/domevents

    【讨论】:

    • 我希望能够给出事件的坐标,以便可以通过外部框架以编程方式调用它。
    • 嘿,刚刚添加了另一个带有MouseEvents 特定数据的示例。
    • 这样更好:-) 'addEventListener' 是干什么用的?
    • 点击窗口时弹出警报只是示例的一部分(证明事件模拟有效)
    【解决方案2】:

    如果有人遇到这种情况,正在寻找一种与框架无关的方式来触发任何 HTML 和鼠标事件(并在需要时设置一些选项),请查看此处:How to simulate a mouse click using JavaScript?

    【讨论】:

    • 在过去的一个小时左右,我们注意到您发布了许多问题的相同答案。虽然我们感谢您为找到您描述的解决方案所做的努力,但如果您可以说出您的答案来解决 OP 的特定问题,而不是发布相同的样板答案,那将会更有帮助。不这样做可能会引起反对,因为其他用户可能会将这些样板答案视为“垃圾邮件”。
    • 此外,回复此问题stackoverflow.com/questions/6157162 的相同样板答案与 OP 的问题无关,该问题是关于如何连接事件处理程序而不是关于如何模拟点击页面元素.同样,请花更多时间和精力确保您的答案是相关的。谢谢。
    • 嗨,Kev,我刚刚删除的最后一个。你是对的,我热情过头了。通常问题比解决方案更具体(模拟点击,keydown,...的问题)。我认为这没关系,因为它可以处理比请求更多的内容。我所做的是搜索 [javascript] +simulate 事件(如果我没记错的话,那是深夜)。当我曾经在寻找关于如何模拟点击链接的答案时,我遇到了 kangax 解决方案。就我个人而言,我很高兴找到一个可以处理比我需要的更多并且保持相对轻便的解决方案..
    • 我这样做是出于好意,我希望这是最重要的吗?我很抱歉那个错误的。如果你能找到其他的,请告诉我。
    • 我很好,你这样做是出于好意,只是尝试根据情况调整答案(我意识到,当你有一个可以适用于广泛场景的解决方案时,这可能会很困难)。 OP 和其他用户喜欢这样,因为它看起来好像您已经为他们花费了一些时间。谢谢。
    猜你喜欢
    • 2021-03-07
    • 2015-02-17
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2011-03-08
    • 2011-09-03
    相关资源
    最近更新 更多