自定义事件javascript
自定义事件
1、event构造函数自定义事件
/*
* 自定义一个名为build的事件
* bubbles :事件是否冒泡
* cancelable:是否阻止事件的默认操作
* composed:指示事件是否将触发影子根外部的侦听器
*/
var buildEvent = new Event('build',{"bubbles":true, "cancelable":false,"composed":false}
);
//监听自定义定义的build事件 elem=getElemntById("xx").addEventListener()或者document.addEventListener()
elem.addEventListener('build', function (e) {
/* 类似elem.onclick */
}, false); //手动触发事件,自定义的浏览器是捕获不到的需要用下面的代码手动触发
elem.dispatchEvent(buildEvent);
2、CustomEvent()自定义事件
为了向事件对象添加更多数据,存在CustomEvent接口,并且可以使用详细信息属性传递自定义数据。 例如,可以如下创建事件
var event = new CustomEvent('build', { detail: elem.dataset.time });
面的代码允许你在事件监听器中访问更多的数据:
function eventHandler(e) {
log('The time is: ' + e.detail);
}
例子:
obj=document.querySelector('form') // 可以监听为定义的事件,我们在后面补上就行
obj.addEventListener("cat", function(e) { process(e.detail) }); // 创建自定义事件
var event = new CustomEvent("cat", {"detail":{"hazcheeseburger":true}});
//手动触发事件
obj.dispatchEvent(event);
模拟鼠标点击事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>simulate click</title>
</head>
<body>
<input type="button" value="clickMe" id="demo_click">
<script> const btn = document.getElementById('demo_click');
btn.onclick = function () { //
alert('click complete!');
};
simulateClick();
// 2. 模拟 浏览器的鼠标点击事件
// 2.1 可以触发 onclick 事件(先触发)
// 2.2 可以触发 addEventListener 事件(后触发)
// 2.3 jQuery 的事件绑定底层就是 addEventListener ,
function simulateClick() { // 模拟 浏览器的鼠标点击事件
const event = new MouseEvent('click', {
view: window,
bubbles: true,
cancelable: true
});
btn.dispatchEvent(event);
}
</script>
</body>
</html>
或者
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
document.getElementById("clickme").dispatchEvent(e); //只要id 就好 或者
var obj = document.getElementById("obj"); //obj元素上绑定click事件
obj.addEventListener('click', function (event) {
alert(event.eventType);
}, false); var event1 = document.createEvent('HTMLEvents');
event1.initEvent("click", true, true);
event1.eventType = 'message'; //触发obj元素上绑定click事件
obj.dispatchEvent(event1);
IE<9为fireEvent方法
//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);
};
3、废弃的旧方法
// Create the event.
var event = document.createEvent('Event'); // Define that the event name is 'build'.
event.initEvent('build', true, true); // Listen for the event.
elem.addEventListener('build', function (e) {
// e.target matches elem
}, false); // target can be any Element or other EventTarget.
elem.dispatchEvent(event);
自定义事件javascript的更多相关文章
- Javascript之自定义事件
Javascript自定义事件,其本质就是观察者模式(又称订阅/发布模式),它的好处就是将绑定事件和触发事件相互隔离开,并且可以动态的添加.删除事件. 下面通过实例,一步一步构建一个具体的Javasc ...
- javascript事件之:谈谈自定义事件(转)
http://www.cnblogs.com/pfzeng/p/4162951.html 对于JavaScript自定义事件,印象最深刻的是用jQuery在做图片懒加载的时候.给需要懒加载的图片定义一 ...
- javascript和jquey的自定义事件小结
“通过事件机制,可以将类设计为独立的模块,通过事件对外通信,提高了程序的开发效率.” 可以把多个关联但逻辑复杂的操作利用自定义事件的机制灵活地控制好 对象之间通过直接方法调用来交互 1)对象A直接调用 ...
- Javascript事件模型系列(四)我所理解的javascript自定义事件
被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...
- javascript事件之:谈谈自定义事件
对于JavaScript自定义事件,印象最深刻的是用jQuery在做图片懒加载的时候.给需要懒加载的图片定义一个appear事件.当页面图片开始出现时候,触发这个自定义的appear事件(注意,这里只 ...
- JavaScript自定义事件
很多DOM对象都有原生的事件支持,向div就有click.mouseover等事件,事件机制可以为类的设计带来很大的灵活性,相信.net程序员深有体会.随着web技术发展,使用JavaScript自定 ...
- javascript:自定义事件初探
javascript:自定义事件初探 http://www.cnblogs.com/jeffwongishandsome/archive/2008/10/27/1317148.html
- Javascript 自定义事件 (custom event)
Javascript 中经常会用到自定义事件.如何创建一个简单的自定义事件呢?在创建自定义的事件之前,我们应该考虑一下和事件有关的东西.例如 click 事件,首先我们要能注册一个click事件(在一 ...
- 理解的javascript自定义事件
理解的javascript自定义事件 被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情, ...
随机推荐
- springboot配置文件application.properties更新记录(自学使用)
#应用名称spring.application.name=demo #应用根目录server.context-path=/demo #应用端口server.port=8084 #错误页,指定发生错误时 ...
- python语句结构(控制语句与pass语句)
python语句结构(控制语句和pass语句) break-跳出循环:语句可以跳出for和while语句的循环体.如果你从for和while循环中终止,任何对应循环的else语块均终止 continu ...
- ztree 树状图——例
效果: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta ...
- angular 级联选择
HTML: <link rel="stylesheet" href="views/tree/checkbox.css"/> <div clas ...
- 2019-8-2-WPF-依赖属性绑定不上调试方法
title author date CreateTime categories WPF 依赖属性绑定不上调试方法 lindexi 2019-08-02 19:56:32 +0800 2019-8-2 ...
- show master status
只有在主库上执行才能有效抵输出: 具体文档如下: # 在127.:3306主库上执行 tmp@127.0.0.1 ((none))> show variables like '%server%' ...
- 深入理解Java虚拟机(自动内存管理机制)
文章首发于公众号:BaronTalk 书籍真的是常读常新,古人说「书读百遍其义自见」还是很有道理的.周志明老师的这本<深入理解 Java 虚拟机>我细读了不下三遍,每一次阅读都有新的收获, ...
- 【BZOJ 1257】[CQOI2007]余数之和sum
一道LLJ说他吃*的题. 我实在是太愚蠢了. 传送门
- apache配置域名子目录,访问不同子项目
<VirtualHost *:443> DocumentRoot "E:/phpstudy/WWW/nextplus" ServerName local-main.co ...
- dns 逐级查找顺序
1.浏览器 dns 缓存 2.Windows Host 文本 3.windows 本地 dns 缓存 方法/步骤 首先我们来查看win系统内保存的dns缓存并进行清空dns缓存操作. ... 点击确定 ...