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:在用户单击主鼠标按钮(一般为鼠标左键)或者按下回车时触发,这一点对 ...
随机推荐
- mysql学习记录
干净卸载mysql:https://blog.csdn.net/cxy_summer/article/details/70142322mysql 解压缩版安装说明:https://jingyan.ba ...
- 主机WiFi时,vmware ubuntu 桥接上网
1.在vmwared软件主页的编辑->虚拟网络编辑器中,桥接模式,选择桥接至电脑的无线网卡(在主机上查询) 2.虚拟机设置中,选择桥接模式 3.ubuntu 桌面右上方edit connecti ...
- 2018年 js 简易控制滚动条滚动的简单方法
首先是es2015 的新api Element.scrollIntoView() // 滚动到最上方 等同于 dom.scrollIntoView(true) Element.scrollIntoVi ...
- 使用react-handsontable
新建一个项目 create-react-app myProject cd myProject npm install handsontable 或者 npm install handsontable- ...
- scrapy 爬取智联招聘
准备工作 1. scrapy startproject Jobs 2. cd Jobs 3. scrapy genspider ZhaopinSpider www.zhaopin.com 4. scr ...
- Springmvc中@RequestMapping 属性用法归纳
简介: @RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. RequestM ...
- 5-1 unittest框架使用
unittest是python的一个单元测试框架,内置的,不需要pip install 什么什么的.直接在py文件里面调用 import unittest. 他这个框架是怎么回事呢,他可以对数据初始 ...
- Nginx浅谈
Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...
- 静态链接库与动态链接库----C/C++
http://blog.csdn.net/freestyle4568world/article/details/49817799
- 【Python】【BugList13】req = requests.get(url=target)报错: (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)')
[代码] # -*- coding:UTF-8 -*- import requests if __name__ == '__main__': target = 'https://unsplash.co ...