Javascript Jquery dispatchEvent包装器方法

Javascript Jquery dispatchEvent包装器方法,javascript,jquery,html,events,Javascript,Jquery,Html,Events,jquery中是否有用于dispatchEvent的包装器方法或库?我一直在stackoverflow上寻找这个方法,但我找到的最接近的方法是jquery的trigger(),它似乎只触发jquery事件侦听器。当然,我可以自己使用dispatchEvent,但我想使用jquery使代码更易于阅读 我正在写一个greasemonkey脚本,我想向某个匿名事件侦听器触发一个事件。页面本身不是用jquery编写的 这里有一个JSFIDLE链接来解释我试图实现的目标: js: 功能日志{ docume

jquery中是否有用于dispatchEvent的包装器方法或库?我一直在stackoverflow上寻找这个方法,但我找到的最接近的方法是jquery的trigger(),它似乎只触发jquery事件侦听器。当然,我可以自己使用dispatchEvent,但我想使用jquery使代码更易于阅读

我正在写一个greasemonkey脚本,我想向某个匿名事件侦听器触发一个事件。页面本身不是用jquery编写的

这里有一个JSFIDLE链接来解释我试图实现的目标:

js:

功能日志{
document.getElementById('log')。innerHTML+=s+'
'; } $(函数(){ //页面上的代码,不应更改 //开始 document.getElementById('link')。addEventListener('click',function(){ 日志(“检测到点击”); },假); //结束 $('triggerClickJQuery')。在('click',function()上{ $('#link')。触发器('click'); }); $('triggerClickJS')。在('click',function()上{ var event=document.createEvent('MouseEvents'); initMouseEvent('click',true,true,null,-1,-1,-1,0,true,false,false,true,0,null); $('#link').get(0).dispatchEvent(事件); }); });
html:






提前感谢。

在jQuery(高达1.10.1)中为自定义事件执行
触发器
,不会触发本机事件,因此您将无法通过
addEventListener
或加载在同一页面上的
jQuery
的不同版本来侦听它

这个bug及其所有用例都在这里有详细的文档记录:

作为一种解决方案,您可以使用它来检查浏览器是否支持触发自定义本机事件,并在可用时使用它


我正在使用jquery 2.0.3,看起来bug仍然存在。这也适用于点击事件,谢谢你写这篇文章。
function log(s){
    document.getElementById('log').innerHTML+=s+'<br/>';
}

$(function(){
    //code on the page, which shouldn't be changed
    //start
    document.getElementById('link').addEventListener('click',function(){
        log('click detected');
    },false);
    //end
    
    $('#triggerClickJQuery').on('click',function(){
        $('#link').trigger('click');
    });
    
    $('#triggerClickJS').on('click',function(){
        var event=document.createEvent('MouseEvents');
        event.initMouseEvent('click',true,true,null,-1,-1,-1,-1,0,true,false,false,true,0,null);
        $('#link').get(0).dispatchEvent(event);
    });
});
<body>

<a id="link" href="javascript:void(0);">Link</a><br/>
<a id="triggerClickJQuery" href="javascript:void(0);">Trigger Click JQuery</a><br/>
<a id="triggerClickJS" href="javascript:void(0);">Trigger Click JavaScript</a><br/>

<div id="log"></div>

</body>