当前位置: 首页 > 编程日记 > 正文

事件绑定在IE下this是window的问题

昨天写一个函数的时候,后来用了事件绑定,开始没在IE下测试,在chrome下都是没问题的。后来在IE下测试发现出错。

后来修改一下,发现oBox.οnclick=function(){}没问题,而addEven(oBox, "click", function(){})在IE下就出错。

再后来发现居然在IE下的this居然是window。。。

在群里问了一下兼容性解决办法,再搜索一下,找到下面的一个博文

封装一个事件绑定函数

function addEven(obj,type,fn)
{
   if(obj.attachEvent)
 {
   obj.attachEvent('on'+type,fn); 
  }
 else
 {
   obj.addEventListener(type,fn,false); 
 }
}

在ie下弹出this的时候不会弹出标签对象本身,而是弹出window,先来看看call()方法:函数的调用如a();实际上等同于a.call();

例如有这样一个函数function a(){alert(this)}  这时结果是window,如果这样调用a.call('aaa');会弹出aaa,也就是说call里面的变量会改变函数this的值。

因此封装绑定函数就可以调用call,这样来做

function addEven(obj,type,fn)
{
   if(obj.attachEvent)
 {
   obj.attachEvent('on'+type,function(){
      fn.call(obj)//里面的this的值变成obj 变成当前调用的标签对象
    }); 
    }
 else
 {
   obj.addEventListener(type,fn,false); 
 }
}

再进一步用三目运算优化就可以这样做

function addEven(obj,type,fn)
{
  return obj.attachEvent ? obj.attachEvent('on'+type,function(){fn.call(obj)}) : obj.addEventListener(type,fn,false); 
}

转自:http://www.cnblogs.com/thinksley/archive/2012/11/28/2792258.html

转载于:https://www.cnblogs.com/kendyjack/archive/2012/12/05/2802480.html

相关文章:

nvidia-jetson系列硬件平台上安装Qt

nvidia-jetson系列硬件平台上安装Qt 目标平台: Jetson Nano、Jetson TX2、etson Xavier NX、Jetson AGX Xavier 概述: 系统环境: 我的设备是下列环境,其实只要是L4T版本的应该都是可以的 镜像烧录方式:SDKManager 系统镜像版本:L4T-32.…

以后在这里安家

以后在这里安家,希望在这里学到更多的知识,分享更多的快乐与汗水,希望大家共同成长转载于:https://blog.51cto.com/heyangfan88/804542

如何用git命令行上传本地代码到github

如何用git命令行上传本地代码到github 2016年09月19日 16:10:36 阅读数:9337注意:安装的前提条件是配置好git的相关环境或者安装好git.exe,此处不再重点提及 上传的步骤:(本文采用git 命令界面进行操作) ( git config …

C# 的快捷键汇总(一)

全局快捷键 ——〉下列快捷组合键可用于集成开发环境 (IDE) 中的不同位置 命令名 快捷键 说明 关系图.属性 Alt Enter 将焦点从关系图切换到“属性”窗口。 编辑.复制 Ctrl C 将选定项复制到剪贴板。 编辑.剪切 Ctrl X 从…

git修改远程仓库地址

原文连接: https://blog.csdn.net/u012852597/article/details/79241548 内容: 方法有三种: 1.修改命令 git remote set-url origin [url] 例如: git remote set-url origin gitlabgitlab.chumob.com:php/hasoffer.git2.先删后加 git remote rm or…

ftp主动和被动模式_【扫盲】FTP基础知识详解

关注我,你的眼睛会怀孕本文主要介绍FTP的工作原理,FTP主动与被动两种工作模式。FTP 简介FTP协议就是文件传输控制协议。它可以使文件通过网络从一台主机传送到同一网络的另一台主机上,而不受计算机类型和操作系统类型的限制。服务器、大型机&…

单页面与多页面的区别及优缺点

单页面应用(SPA),通俗一点说就是指只有一个主页面的应用,浏览器一开始要加载所有必须的 html, js, css。所有的页面内容都包含在这个所谓的主页面中。但在写的时候,还是会分开写(页面片段)&…

git使用手册

git使用手册 由 赵庆鹏创建, 最后修改于十二月 14, 2018 一、文件比较 1. 新建两个文件hello/world,内容可自定义,两个文件的内容,需要不相同,进行文件比对。2. 使用diff -u hello world > diff.txt,进行文件比…

python 乒乓球_python乒乓球

这是我用python编的一个小游戏,需要下载simpleaudio库,喜欢的可以玩。 以下是源代码: import turtle as t import simpleaudio as sa yeahsa.WaveObject.from_wave_file(‘bounce.wav’) #创建背景 game t.Screen() game.title(‘双人乒乓球…

《深入浅出Windows Phone 8应用开发》

章节 第1章 概述第2章 开发环境第3章XAML简介第4章 常用控件第5章 布局管理第6章 数据存储第7章 图形动画第8章 多媒体 第9章 启动器与选择器 第10章 手机感应编程第11章 MVVM模式第12章 Silverlight Toolkit组件第13章 网络编程第14章 异步编程与并行编程第15章 联系人和日程安…

CentOS7.4到Elasticsearch一路坑(五)

来来,zookeeper我们聊聊 zookeeper我是搭建了一个集群的,但是搭建完发现,bin/zkServer.sh status一直是不正常的 看了一下日志,的确有问题(有问题你还起来了?) 从这篇文章参考了一下&#xff1a…

轻量级git服务器 Gogs git 服务器搭建

gogs搭建教程: 原文链接: https://garthwaite.org/docker-gogs.html 内容: Dockerized Gogs git server and alpine postgres in 20 minutes or less // under docker I’ve babysat gitlab omnibus before and it wasn’t any fun. So when a group of volunteer…

akaze特征匹配怎么去掉不合适的点_SIFT特征点

SIFT特征点图像特征点检测一直是研究的热点,从早期的harris角点检测开始,一直有很多人关注图像特征点的检测。最早人们关注图像中的角点,主要是因为角点能够代表图像中的一些特征。比如,通过检测两幅图像中的角点,可以…

fopen 中 按文本读写与按二进制读写 实例

参考&#xff1a;http://blog.csdn.net/hinyunsin/article/details/6401854 #include <stdio.h>int main(int argc, char *argv[]) {char he[20] "hello world\n";FILE *outfile fopen("t.txt", "wt");fwrite(he, sizeof(char), 20, out…

狼奔代码生成工具使用心得

狼奔代码生成工具(http://ltfwan.d33140.jit8.cn)是一款为程序员设计的代码生成器&#xff0c;更是一款软件项目智能开发平台&#xff0c;它可以自动生成ASP.NET页面及后台代码&#xff0c;采用了面向服务的架构&#xff08;SOA&#xff09;。那么&#xff0c;要如何通过狼奔代…

h5在手机端实现简单复制

<a href"https://blog-static.cnblogs.com/files/ruanqin/clipboard.min.js">下载clipborrdjs</a>  下载地址&#xff1a;https://blog-static.cnblogs.com/files/ruanqin/clipboard.min.js html中&#xff1a; <div id"app"> <a hr…

MQTT topic匹配规则

MQTT topic匹配规则 原文连接: https://blog.csdn.net/JiangCheng817/article/details/81333893 内容&#xff1a; 主题层级分隔符 “/”: 表示层级关系 单层通配符 “”: 订阅消息时使用&#xff0c;匹配一层主题如 a/ 匹配诸如 a/b a/c 但是不能匹配 a/b/c,特别的单独的可…

产品经理岗位职责说明_技术负责人岗位职责,五大方面,超越岗位抓住未来才是技术大牛...

技术负责人一般指建设领域、生产制造领域、电子商务领域&#xff0c;负责全过程的技术决策、技术指导。技术负责人的岗位职责包含五个方面&#xff1a;技术职责&#xff1a;负责具体技术方案设计思路、关键参数等技术决策&#xff0c;负责对所有技术人员进行具体技术实施时的技…

Jane Eyre

Do you think I could stay here to become nothing to you? Do you think because I am poor , and obscrue, and plain that I am soulless, and heartless? I have as much soul as you and fully as much heart. And if God gifted me beauty and wealth, I should have …

Ubuntu 10.04 LTS 网站权限不够

wordpress不能自动升级config文件没法写找不到目录wordpress修改无法保存。。。。这些都是权限不够。解决办法:给apache一个访问www目录的权限&#xff0c;一般linux的网站目录是/srv/www/此时用下面的命令&#xff1a;chown www-data:www-data /srv/www/ -r

简单配置nginx反向代理,实现跨域请求

简单配置nginx去做反向代理&#xff0c;实现跨域请求 简单介绍nginx的nginx.conf最核心的配置&#xff0c;去做反向代理&#xff0c;实现跨域请求。 更多详细配置&#xff0c;参考nginx官方文档 先介绍几个nginx命令 打开nginx.conf文件/usr/local/etc/nginx/nginx.conf重新加载…

c# redis hashid如何设置过期时间_Redis中Key过期策略amp;淘汰机制

1. Redis中设置Key过期时间我们有两种方式设置过期时间1.1 设置多久后过期设置一个 key 10s 过期&#xff0c;可以这样127.0.0.1:6379> SET key value EX 10127.0.0.1:6379> SET key value PX 10000PX 后面是毫秒ms&#xff0c;EX是秒。设置完成后&#xff0c;10s内&…

在CISCO路由器上配置DHCP与DHCP中继

企业网络中DHCP环境的搭建 企业DHCP需求描述&#xff1a; 在大型企业中&#xff0c;一般都有很多个部门&#xff0c;各部门之间有时要求不能互通&#xff0c;这可以通过使用VLAN来解决&#xff0c;但是上千个人IP配置也是一件极大耗费人力的事。所以我们迫切需求一种全自动的&a…

MQTT消息长度限制

原文连接: https://stackoverflow.com/questions/34522053/what-is-the-maximum-message-length-for-a-mqtt-broker 内容&#xff1a; 单条消息默认限制大小256MB&#xff0c;可以通过配置修改 It’s not entirely clear what you’re asking here, so I’ll answer both pos…

jQuery EasyUI API 中文文档 - DataGrid 数据表格

扩展自 $.fn.panel.defaults &#xff0c;用 $.fn.datagrid.defaults 重写了 defaults 。依赖panelresizablelinkbuttonpagination用法1. <table id"tt"></table> 1. $(#tt).datagrid({ 2. url:datagrid_data.json, 3. columns:[[ 4. …

point-to-point(点对点) 网口

点对点连接是两个系统或进程之间的专用通信链路。想象一下直接连接两个系统的一条线路。两个系统独占此线路进行通信。点对点通信的对立面是广播&#xff0c;在广播通信中&#xff0c;一个系统可以向多个系统传输。 点对点通信在OSI协议栈的物理、数据链路层和网络层中定义。 点…

springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列

源码精品专栏中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 Elastic-Job 源码解析分布式事务中间件 TCC-Transaction 源码解析Eureka 和 Hystrix 源码解…

浏览器缓存网站静态文件

当用户第一次访问你的网站时&#xff0c;让用户的浏览器缓存网站的静态文件&#xff0c;如图片\CSS\JS等,然后接访问接下来的页面就会直接调用浏览器的缓存而不是重新从服务器下载&#xff0c;这样既节省带宽和流量又加快了用户打开网页的速度&#xff0c;一石三鸟&#xff0c;…

MQTT 心跳和keepalive配置

MQTT 心跳和keepalive配置 内容&#xff1a; 正常MQTT 服务器端会配置一个超时时间&#xff0c;一般为60s&#xff0c; 在这个时间段内一个连接如果没有数据传输的话&#xff0c;服务端会主动断开连接以释放资源&#xff0c; 有两种方式可以规避这个问题: 方式1: 最为简单&a…

android开发我的新浪微博客户端-登录页面功能篇(4.2)

上一篇中完成了如上图的UI部分的实现&#xff0c;现在继续来讲功能的实现&#xff0c;用户登录操作主要就是账号列表显示和选择账号登录两个功能其他的都是些简单的辅助功能&#xff0c;首先是点击id为iconSelectBtn的ImageButton时显示用户选择窗口&#xff0c;这个时候去数据…