复合事件主要的用处在于使用输入法编辑器时,往往需要使用多个键,但是最终只输入一个字符。复合事件就是为了检测和输入这种输入而设计的。例如:当我们需要在输入框中输入中文“张”的时候,需要输入 zhang 最后按回车键输入到输入框中。
当我们使用input事件时,输入中文拼音的过程中此时,此时中文并未显示在输入框中,但是依然会触发input事件
改为compositionend事件后
一、设计思路:设计一个简单的输入对话框,然后按下enter进行输入事件。
二、聊天输入框的代码如下:
三、此时的页面展示如下:
四:设计函数,使得输入文字时,按下按钮可以提交到聊天框。
五、此时在页面上测试,输入一段文字:
六、执行结果如下:
七、设计函数,使得按下enter跟按钮同样的功能:
八、刷新页面,测试:
主动触发事件是一个经常会用到的技巧,它很重要。它和事件绑定一样存在着浏览器兼容性问题。传统浏览器(IE8-)使用createEventObject来创建事件对象,用fireEvent这个方法来触发事件;现代浏览器用createEvent来创建对象,用dspatchEvent来触发事件。//获取浏览器版本
var isIE=navigator.userAgent.match(/MSIE (d)/i)
isIE=isIE?isIE[1]:undefined
//事件函数
function onclick(e){
e=eevent
alert(e.msg表酱紫啦,人家羞涩啦~)
}
//给document绑定一个点击事件
isIElt9
//传统浏览器使用attachEvent
?document.attachEvent(onclick,onclick)
//现代浏览器使用addEventListner
:document.addEventListener(click,onclick,false)
//触发自定义事件
if(isIElt9){
//传统浏览器
//创建对象
var event=document.createEventObject()
//给事件对象添加属性
event.msg=我是fireEvent触发的
//触发事件
document.fireEvent(onclick,event)
}else{
//现代浏览器
//创建事件对象
var e=document.createEvent(MouseEvents)
//初始化事件对象
e.initMouseEvent(click),
//给事件对象添加属性
e.msg=我是despatchEvent触发的
//触发事件
document.dispatchEvent(e)
}