如何在DIV元素上合成浏览器点击事件? [英] How do I synthesize a browser click event on a DIV element?

查看:137
本文介绍了如何在DIV元素上合成浏览器点击事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用按钮,我可以调用 click()方法来生成点击。然而,DIV在所有浏览器上都没有这种方法。然而,我可以附加点击事件监听器(通过设置 .onclick =...或添加事件监听器。)

With buttons, I can call the click() method on them to have a click generated. DIVs however don't have this method on all browsers. Yet I can attach click event listeners to them (by either setting .onclick="..." or adding an event listener).

有没有办法让我以编程方式综合点击这样一个元素,但是而不使用jQuery ?理想情况下,这不会依赖于正在注册的侦听器的具体方式(因此只需调用 eval(div.onclick)将不适用于我),并且在所有现代工作浏览器。

Is there any way for me to "synthesize" a click on such an element programmatically, but without using jQuery? Ideally this will not be dependent on a specific way of the listeners being registered (so simply calling eval(div.onclick) will not work for me), and work in all modern browsers.

(为了好奇,我需要这个进行自动化测试,而不是欺骗用户。)

(For the curious, I need this for automated testing, not tricking users.)

推荐答案

我最近写了一个函数来做到这一点到我的库,它可以在GitHub存储库中找到这里

I recently wrote a function to do just this into my library, it can be found in the GitHub repository here.

它完全是跨浏览器,并触发指定的事件选择器引擎我相信你可以从中提取你需要的代码。

It is completely cross browser and triggers the specified event on the elements returned by the selector engine. I am sure you will be able to extract the code you need from it.

如果没有,这里是你需要的。用元素替换元素。并输入事件类型,在这种情况下,单击

If not, here is what you need. Replace element with, well, the element. And type with the type of event, in this case, click.

// Check for createEventObject
if(document.createEventObject){
    // Trigger for Internet Explorer
    trigger = document.createEventObject();
    element.fireEvent('on' + type, trigger);
}
else {
    // Trigger for the good browsers
    trigger = document.createEvent('HTMLEvents');
    trigger.initEvent(type, true, true);
    element.dispatchEvent(trigger);
}

这是一个示例实现。

function simulateEvent(element, type) {
    // Check for createEventObject
    if(document.createEventObject){
        // Trigger for Internet Explorer
        trigger = document.createEventObject();
        element.fireEvent('on' + type, trigger);
    }
    else {
        // Trigger for the good browsers
        trigger = document.createEvent('HTMLEvents');
        trigger.initEvent(type, true, true);
        element.dispatchEvent(trigger);
    }
}

这篇关于如何在DIV元素上合成浏览器点击事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆