Javascript高级编程学习笔记(72)—— 模拟事件(2)IE事件模拟
IE中的事件模拟
低版本的IE浏览器作为前端开发的一股清流,想避过都不行
虽然低版本IE正在逐步被市场淘汰,不得不承认IE8以下的浏览器依然占了不小的份额
所以这里大概介绍IE8以下的低版本IE中的事件模拟,如何实现事件模拟
首先从实现思路上来说,与DOM标准中的事件模拟并没有太大的差异
分为以下几步:
- 创建 event 对象
 - 为event 对象指定信息
 - 使用该对象来触发事件
 
只是实现的方法有所差异
在IE中创建 event 对象需使用 document.createEventObject() 方法
与DOM不同的地方在于,该方法不接受参数,不管你需要返回一个什么样类型的事件该方法都会返回一个通用的事件对象
痛苦的地方在于,我们必须手动地为创建的 event 添加所有的事件信息,也就是初始化事件对象这一步骤需要我们手工完成
在触发事件的方式上,我们需要在目标元素上调用 fireEvent 方法,该方法接收两个参数,1.事件处理程序,2.event对象
该方法会为我们添加 srcElement 和 type 属性,其余的属性则需要我们手工添加
以模拟 click 事件为例:
var btn = document.getElementById("myBtn");
//创建事件对象
var event = document.createEventObject();
//初始化事件对象
event.screenX = 100;
event.screenY = 100;
event.clientX = 100;
event.clientY = 100;
event.ctrlKey  = false;
event.altKey = false;
event.shiftKey = false;
event.button = 0;
event.bubble = true;
event.cancelable = true;
...
//触发事件
btn.fireEvent("onclick",event);
由于IE返回的是一个通用的 event 事件对象,所以就算我们在初始化事件对象时指定了IE不支持的属性也没有关系
Javascript高级编程学习笔记(72)—— 模拟事件(2)IE事件模拟的更多相关文章
- Javascript高级编程学习笔记(71)—— 模拟事件(1)DOM事件模拟
		
事件,指的是网页中某个特定的交互时刻 一般来说事件由浏览器厂商负责提供,一般由用户操作或者其它浏览器功能来触发 但是有一类特殊的事件,那就是由我们开发人员通过JS触发的事件 这些事件和浏览器创建的事件 ...
 - Javascript高级编程学习笔记(57)—— 事件(1)事件流
		
事件 JS与HTML的交互是通过事件实现的 而事件指的就是:文档或浏览器窗口特定的交互瞬间 可以通过侦听器来预定事件,以便在事件发生时执行相应的代码 这种模式也是设计模式中的观察者模式 事件流 有了事 ...
 - Javascript高级编程学习笔记(67)—— 事件(11)HTML5事件
		
DOM规范没有涵盖所有浏览器支持的所有事件 而许多浏览器出于满足用户需求,或解决特殊问题的目的,实现了一些自定义事件 HTML5列出了浏览器应该支持的所有事件,这里只讨论得到浏览器完善支持的事件(并非 ...
 - Javascript高级编程学习笔记(70)—— 事件(14)内存和性能
		
由于事件处理程序是现代的web程序交互能力的提供者 所以在日常实践中,我们免不了要向页面中添加大量的事件处理程序(不管是用于用户交互还是用于统计用户数据) 在创建GUI(图形用户界面)的语言(如C#) ...
 - Javascript高级编程学习笔记(69)—— 事件(13)触摸与手势事件
		
触摸与手势事件 由于移动设备既没有鼠标也没有键盘,所以在为移动浏览器开发交互性网页时,常规的鼠标键盘事件根本不够用 所以早期的苹果为Safari 添加了一些与触摸相关的事件 随着后面Android的W ...
 - Javascript高级编程学习笔记(68)—— 事件(12)设备事件
		
设备事件 随着智能手机与平板电脑的普及,为了更好地让用户与这些设备进行交互 浏览器引入了一种新的方式,而一类新的事件也应运而生,这就是设备事件 W3C从2011年开始制定关于设备事件的草案 下面将会介 ...
 - Javascript高级编程学习笔记(66)—— 事件(10)变动事件
		
变动事件 DOM2级的变动事件,能在DOM中的一部分发生变化时给出提示 变动事件是为XML或HTML DOM 设计的,并不特定于某种语言 DOM2级定义了如下变动事件: DOMSubtreeModif ...
 - Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件
		
键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...
 - Javascript高级编程学习笔记(63)—— 事件(7)鼠标及滚轮事件
		
鼠标与滚轮事件 鼠标事件是web开发中最常用的一类事件,毕竟鼠标是最主要的定位设备 DOM3级事件中定义了9个鼠标事件: click:在用户单击主鼠标按钮(一般为鼠标左键)或者按下回车时触发,这一点对 ...
 
随机推荐
- 使用tcpcopy复制线上流量进行测试
			
使用tcpcopy复制线上流量进行测试 online server 线上服务所在机器 10.136.11.4 部署tcpcopy sudo /usr/local/tcpcopy/sbin/tcpcop ...
 - 如何用命令将本地项目上传到git[z]
			
1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...
 - leetcode1:两数之和
			
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 实例: 给定 nums = [2, 7, 11, 15],target = ...
 - Skipping acquire of configured file ···doesn't support architecture 'i386'  acquire of configured file
			
系统更新的时候报错: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://rep ...
 - 堆&栈的理解(转)
			
(摘自:http://www.cnblogs.com/likwo/archive/2010/12/20/1911026.html) C++中堆和栈的理解 内存分配方面: 堆: 操作系统有一个记录空闲内 ...
 - mvc    @helper 创建用户自定义html
			
转载地址:https://www.cnblogs.com/caofangsheng/p/5670071.html
 - angularJs 2-quickstart学习记录
			
angular官网文档 我尝试文档中下载<快速起步>种子的方法进行quickstart. cd quickstart npm install npm start npm install 这 ...
 - AspNetCore中的IdentityServer4客户端认证模式实现
			
1 AuthorizationServer using IdentityServer4; using IdentityServer4.Models; public class Startup { pu ...
 - JAVA解决前端跨域问题。
			
什么是跨域? 通俗来说,跨域按照我自己的想法来理解,是不同的域名之间的访问,就是跨域.不同浏览器,在对js文件进行解析是不同的,浏览器会默认阻止,所以 现在我来说下用java代码解决前端跨域问题. 用 ...
 - Windows 10 专业版 长期服务版 激活
			
这个用小白系统之后一段时间显示要求激活,或者更改产品秘钥.网上找了许多秘钥也是没啥用,又不想用激活工具的话,可以试试用win+R 输入cmd : 依次输入:slmgr /skms kms.digibo ...