IE中的事件模拟

低版本的IE浏览器作为前端开发的一股清流,想避过都不行

虽然低版本IE正在逐步被市场淘汰,不得不承认IE8以下的浏览器依然占了不小的份额

所以这里大概介绍IE8以下的低版本IE中的事件模拟,如何实现事件模拟

首先从实现思路上来说,与DOM标准中的事件模拟并没有太大的差异

分为以下几步:

  1. 创建 event 对象
  2. 为event 对象指定信息
  3. 使用该对象来触发事件

只是实现的方法有所差异

在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事件模拟的更多相关文章

  1. Javascript高级编程学习笔记(71)—— 模拟事件(1)DOM事件模拟

    事件,指的是网页中某个特定的交互时刻 一般来说事件由浏览器厂商负责提供,一般由用户操作或者其它浏览器功能来触发 但是有一类特殊的事件,那就是由我们开发人员通过JS触发的事件 这些事件和浏览器创建的事件 ...

  2. Javascript高级编程学习笔记(57)—— 事件(1)事件流

    事件 JS与HTML的交互是通过事件实现的 而事件指的就是:文档或浏览器窗口特定的交互瞬间 可以通过侦听器来预定事件,以便在事件发生时执行相应的代码 这种模式也是设计模式中的观察者模式 事件流 有了事 ...

  3. Javascript高级编程学习笔记(67)—— 事件(11)HTML5事件

    DOM规范没有涵盖所有浏览器支持的所有事件 而许多浏览器出于满足用户需求,或解决特殊问题的目的,实现了一些自定义事件 HTML5列出了浏览器应该支持的所有事件,这里只讨论得到浏览器完善支持的事件(并非 ...

  4. Javascript高级编程学习笔记(70)—— 事件(14)内存和性能

    由于事件处理程序是现代的web程序交互能力的提供者 所以在日常实践中,我们免不了要向页面中添加大量的事件处理程序(不管是用于用户交互还是用于统计用户数据) 在创建GUI(图形用户界面)的语言(如C#) ...

  5. Javascript高级编程学习笔记(69)—— 事件(13)触摸与手势事件

    触摸与手势事件 由于移动设备既没有鼠标也没有键盘,所以在为移动浏览器开发交互性网页时,常规的鼠标键盘事件根本不够用 所以早期的苹果为Safari 添加了一些与触摸相关的事件 随着后面Android的W ...

  6. Javascript高级编程学习笔记(68)—— 事件(12)设备事件

    设备事件 随着智能手机与平板电脑的普及,为了更好地让用户与这些设备进行交互 浏览器引入了一种新的方式,而一类新的事件也应运而生,这就是设备事件 W3C从2011年开始制定关于设备事件的草案 下面将会介 ...

  7. Javascript高级编程学习笔记(66)—— 事件(10)变动事件

    变动事件 DOM2级的变动事件,能在DOM中的一部分发生变化时给出提示 变动事件是为XML或HTML DOM 设计的,并不特定于某种语言 DOM2级定义了如下变动事件: DOMSubtreeModif ...

  8. Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件

    键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...

  9. Javascript高级编程学习笔记(63)—— 事件(7)鼠标及滚轮事件

    鼠标与滚轮事件 鼠标事件是web开发中最常用的一类事件,毕竟鼠标是最主要的定位设备 DOM3级事件中定义了9个鼠标事件: click:在用户单击主鼠标按钮(一般为鼠标左键)或者按下回车时触发,这一点对 ...

随机推荐

  1. webapp优化

    1. 优化前提: 业务架构与数据库设计 2.  单页web应用  : ExtJs  backbone  ng  avalon 框架: React Native    , ionic  , Mui, m ...

  2. 微信x5内核很鸡贼啊

    最近在写一个支付项目,然后要打通微信和支付宝支付,本来后端联调的时候直接调用weixin://wxpay/bizpayurl?XXXX接口就行的,完全走着通,然后到项目验收了就炸了,点不进去了,最后改 ...

  3. linux 网络管理的三种方式

    修改网络IP的三种方式 1.修改配置文件 1.1dhcp自动获取 配置文件地址/etc/sysconfig/network-scripts TYPE=Ethernet  #类型=以太网 PROXY_M ...

  4. CentOS升级OpenSSL至OpenSSL 1.1.0f版本<其中有遇到libcrypto.so的问题>

    概述: 整体步骤如下: 1.先检查版本 2.进行安装 <安装采用源码安装,然后再做相关的链接指向> 一.检查当前环境 1. 查看当前版本 openssl version 或者使用 yum ...

  5. Electorn(桌面应用)自动化测试之Java+selenium实战例子

    基于electorn的桌面应用,网上相关资料较少.所有记录一下.使用java+selenium+testng对该类型应用的自动化测试方法. 代码样例 package com.contract.web. ...

  6. Firefox 调试 JavaScript 代码

    第一步  新建 html 或者 jsp 文件 文件内容 <!DOCTYPE html> <html> <head> <meta charset="u ...

  7. 转存下链接--- Java awt Swing 进行拖拽实现布局

    http://blog.csdn.net/vpingchangxin/article/details/8673825 swing开发图形界面工具,eclipse swing图形化操作界面工具配置

  8. css2d 3d

    2D转换 1.rotate()   旋转 <!DOCTYPE html><html> <head> <meta charset="UTF-8&quo ...

  9. SVG制作可爱小页面

    很久都没有在博客园上发表一些自己学的新东西了,只是在有空的时候逛一逛博客园而已,看来我不是一个真正的程序员,哈哈! 但是今天非常想和大家分享一个小东西,那是前两天在一个网页上看到了这个东西 我好奇中间 ...

  10. 《Linux就该这么学》第十一天课程

     防火墙常用的一些命令参数 原创地址:https://www.linuxprobe.com/chapter-08.html firewalld中常用的区域名称及策略规则 区域 默认规则策略 trust ...