1. <body>  
2.         <div></div>  
3.         <script>  
4.             // 创建自定义事件  
5.             var customEvent =document.createEvent('CustomEvent')  
6.   
7.             // 初始化自定义事件              
8.             customEvent.initCustomEvent('自定义事件',true,true,{a:'123',b:'456'})  
9.             // initCustomEvent 四个参数:  
10.             //                     1:事件类型名称  
11.             //                     2:是否可以冒泡  
12.             //                     3:是否可以取消默认事件  
13.             //                     4:自定义数据    
14.             // 事件对象event.detail获取自定义数据  
15.   
16.             var div =document.querySelector('div')  
17.             div.addEventListener('自定义事件',function(e){  
18.                 alert('观察到了一个自定义事件'+ '-' + e.detail.b)  
19.             })  
20.   
21.             div.dispatchEvent(customEvent)  
22.             // 派发事件  
23.   
24.             // 自定义事件的使用过程:  
25.             // 1、创建一个自定义事件对象  
26.             // 2、初始化该事件对象  
27.             // 3、监听自定义事件  
28.             // 4、派发该事件  
29.   
30.             document.body.addEventListener('discoverNumber',function(e){  
31.                 alert('得到一个数:' + e.detail.num + '|' + e.detail.description)  
32.             })  
33.             window.addEventListener('discoverNumber',function(e){  
34.                 alert('第二个监听者:' + e.detail.num)  
35.             })  
36.             for(var i = 0;i<=100;i++){  
37.                 if(i%3 == 0){  
38.                     // 创建一个数据对象  
39.                     var detaila = new Object()  
40.                     detaila.num = 1  
41.                     detaila.description = '被三整除的数'  
42.   
43.                     // 事件数据  
44.                     var data = {}  
45.                     data.detail = detaila  
46.                     data.bubble =true  
47.                     data.cancelable = true  
48.   
49.                     // 自定义事件new Event 和 new CustomEvent  
50.                     var e = new CustomEvent('discoverNumber',data)  
51.                     // 创建新的自定义事件  
52.   
53.                     document.body.dispatchEvent(e)  
54.                     // 派发事件  
55.   
56.                 }  
57.             }  
58.               
59.             // 总结  
60.             //     自定义事件类型名称可以是任意名称 可以写成中文  
61.             //     自定义事件可以挖洞(捕获过程) 事件的传播是正常的  
62.             //     自定义事件可以设置不冒泡 可以控制是否能够取消  
63.             //     自定义事件可以携带数据 这个数据可以是一个复杂的数据对象 也可以是一个简单数字或者字符串  
64.   
65.             // 参考资料: http://www.jianshu.com/p/418e9e35d5a1  
66.         </script>  
67.     </body>