自定义事件

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的更多相关文章

  1. Javascript之自定义事件

    Javascript自定义事件,其本质就是观察者模式(又称订阅/发布模式),它的好处就是将绑定事件和触发事件相互隔离开,并且可以动态的添加.删除事件. 下面通过实例,一步一步构建一个具体的Javasc ...

  2. javascript事件之:谈谈自定义事件(转)

    http://www.cnblogs.com/pfzeng/p/4162951.html 对于JavaScript自定义事件,印象最深刻的是用jQuery在做图片懒加载的时候.给需要懒加载的图片定义一 ...

  3. javascript和jquey的自定义事件小结

    “通过事件机制,可以将类设计为独立的模块,通过事件对外通信,提高了程序的开发效率.” 可以把多个关联但逻辑复杂的操作利用自定义事件的机制灵活地控制好 对象之间通过直接方法调用来交互 1)对象A直接调用 ...

  4. Javascript事件模型系列(四)我所理解的javascript自定义事件

    被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...

  5. javascript事件之:谈谈自定义事件

    对于JavaScript自定义事件,印象最深刻的是用jQuery在做图片懒加载的时候.给需要懒加载的图片定义一个appear事件.当页面图片开始出现时候,触发这个自定义的appear事件(注意,这里只 ...

  6. JavaScript自定义事件

    很多DOM对象都有原生的事件支持,向div就有click.mouseover等事件,事件机制可以为类的设计带来很大的灵活性,相信.net程序员深有体会.随着web技术发展,使用JavaScript自定 ...

  7. javascript:自定义事件初探

    javascript:自定义事件初探   http://www.cnblogs.com/jeffwongishandsome/archive/2008/10/27/1317148.html

  8. Javascript 自定义事件 (custom event)

    Javascript 中经常会用到自定义事件.如何创建一个简单的自定义事件呢?在创建自定义的事件之前,我们应该考虑一下和事件有关的东西.例如 click 事件,首先我们要能注册一个click事件(在一 ...

  9. 理解的javascript自定义事件

    理解的javascript自定义事件 被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情, ...

随机推荐

  1. “fixed+relative≈≈absolute”——对BFC的再次思考

    好久没写博客了,刚好今天跨年夜没约到什么妹子,在家宅着不如写点东西好了. 需求 昨天晚上,给公司年会做一个移动端的投票页面,遇到一个UI优化的问题: · 正文内容少于一屏时,投票提交按钮固定显示在页面 ...

  2. 第五篇:zTree节点的一些操作,权当备份

    项目场景:将zTree的一个节点挪到某个已知的根节点下,因为树上的节点都是数据库查询出来的,所以不能直接用addNodes()这个方法(否则一刷新又恢复原样了),而是要把这个节点及其某些属性数据保存到 ...

  3. Mysql优化系列之数据类型优化

    本篇是优化系列的第一篇:数据类型 为了不产生赘述,尽量用简洁的语言来描述. 在选择数据类型之前,首先要知道几个原则: 更小的通常更好 尽量使用可以正确存储数据的最小数据类型.更小的数据类型意味着更快, ...

  4. git工作区和暂存区图

  5. python字典的常用操作,数据类型划分

    一.数据类型划分之一 可分为:可变数据类型,不可变数据类型 不可变数据类型:元祖,布尔值(Bool),数值 int ,字符串 str               可哈希 可变数据类型:  list,d ...

  6. grep 查看前后几行和参数匹配

    如果在只是想匹配模式的上下几行,grep可以实现.   grep -5 'parttern' inputfile //打印匹配行的前后5行 grep -C 5 'parttern' inputfile ...

  7. [Ceoi2016|BZOJ4936] Match

    哈希+分治+stack 题目: 给你一个由小写字母组成的字符串s,要你构造一个字典序最小的(认为左括号的字典序比右括号小)合法的括号 序列与这个字符串匹配,字符串和括号序列匹配定义为:首先长度必须相等 ...

  8. jvisualvm 工具使用【转】

    VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe). https:// ...

  9. 数据结构学习笔记_树(二叉搜索树,B-树,B+树,B*树)

    一.查找二叉树(二叉搜索树BST) 1.查找二叉树的性质 1).所有非叶子结点至多拥有两个儿子(Left和Right): 2).所有结点存储一个关键字: 3).非叶子结点的左指针指向小于其关键字的子树 ...

  10. duilib教程之duilib入门简明教程4.响应按钮事件

    上一个Hello World的教程里有一句代码是这样的:CControlUI *pWnd = new CButtonUI;    也就是说,其实那整块绿色背景区域都是按钮的区域.(这里简要介绍下,CC ...