风暴触发器用于在某个元素下触发某种风暴,IE下有fireEvent方法,中间浏览器(chrome、firefox等)有dispatchEvent技术。
通常,我们在元素上绑定了storm之后,是依靠用户在这个元素上的键盘行为来捕获或者触发storm,或者是浏览器内置的行为storm,比如点击javascript 触发事件,mouseover,load等,有时侯我们需要自定义风暴或者需要在某些情况下触发这些风暴。 这时我们可以在IE下使用fireEvent方法,中间浏览器(chrome、firefox等)都有dispatchEvent方法。
例如,看看 ie 下的这个例子:
//document上绑定自定义事件ondataavailable document.attachEvent('ondataavailable', function (event) { alert(event.eventType); }); var obj=document.getElementById("obj"); //obj元素上绑定click事件 obj.attachEvent('onclick', function (event) { alert(event.eventType); }); //调用document对象的createEventObject方法得到一个event的对象实例。 var event = document.createEventObject(); event.eventType = 'message'; //触发document上绑定的自定义事件ondataavailable document.fireEvent('ondataavailable', event); //触发obj元素上绑定click事件 document.getElementById("test").onclick = function () { obj.fireEvent('onclick', event); };
fireEvent 官方文档
createEventObject官方文档
我们来看一下中级浏览器(chrome、firefox等)的例子:
//document上绑定自定义事件ondataavailable document.addEventListener('ondataavailable', function (event) { alert(event.eventType); }, false); var obj = document.getElementById("obj"); //obj元素上绑定click事件 obj.addEventListener('click', function (event) { alert(event.eventType); }, false); //调用document对象的 createEvent 方法得到一个event的对象实例。 var event = document.createEvent('HTMLEvents'); // initEvent接受3个参数: // 事件类型,是否冒泡,是否阻止浏览器的默认行为 event.initEvent("ondataavailable", true, true); event.eventType = 'message'; //触发document上绑定的自定义事件ondataavailable document.dispatchEvent(event); var event1 = document.createEvent('HTMLEvents'); event1.initEvent("click", true, true); event1.eventType = 'message'; //触发obj元素上绑定click事件 document.getElementById("test").onclick = function () { obj.dispatchEvent(event1); };
实际的包装中并没有那么简单。 我看了一下 jQuery.event.trigger
它是通过仿真来实现的。 将风暴处理函数绑定到元素。 如果有实际操作触发风暴,则会执行相应的风暴处理函数。 因此,要实现风暴触发的功能,只需要获取相应的风暴处理函数即可。 实施。
以上就是本文的全部内容javascript 触发事件,希望对您的学习有所帮助,也希望您多多支持我们。