首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AddEventListener IE % 11中的调用对象无效

在IE 11中,调用对象无效是指在使用addEventListener方法时,无法正确地绑定事件处理程序到指定的对象上。这是因为在IE 11及更早版本中,不支持addEventListener方法,而是使用attachEvent方法来实现事件绑定。

attachEvent方法是IE独有的方法,用于向指定的对象添加事件处理程序。它的语法如下:

代码语言:txt
复制
object.attachEvent(event, handler)

其中,object是要绑定事件的对象,event是事件名称(不包括"on"前缀),handler是事件处理程序函数。

然而,attachEvent方法有一些限制和问题。首先,它只能绑定到冒泡阶段,无法在捕获阶段绑定事件。其次,事件处理程序中的this关键字指向的是全局对象window,而不是绑定事件的对象。此外,由于attachEvent是IE独有的方法,因此在跨浏览器兼容性方面存在问题。

为了解决这些问题,推荐使用现代浏览器支持的addEventListener方法来绑定事件。addEventListener方法是W3C标准定义的方法,可以在所有现代浏览器中使用。它的语法如下:

代码语言:txt
复制
object.addEventListener(event, handler, useCapture)

其中,object是要绑定事件的对象,event是事件名称,handler是事件处理程序函数,useCapture是一个布尔值,表示事件是在捕获阶段还是冒泡阶段处理。

使用addEventListener方法可以更灵活地绑定事件处理程序,并且可以在捕获阶段或冒泡阶段处理事件。此外,事件处理程序中的this关键字指向的是绑定事件的对象,更符合开发者的预期。

对于使用addEventListener方法的兼容性处理,可以通过检测浏览器是否支持addEventListener方法来选择使用attachEvent方法或addEventListener方法。可以使用以下代码进行判断:

代码语言:txt
复制
if (object.addEventListener) {
    object.addEventListener(event, handler, useCapture);
} else if (object.attachEvent) {
    object.attachEvent("on" + event, handler);
}

总结起来,如果在IE 11中调用对象无效,可以考虑使用attachEvent方法来绑定事件处理程序。但为了更好地兼容现代浏览器,推荐使用addEventListener方法,并进行兼容性处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JS获取事件对象,获取事件对象(Firefox,IE

同时注意event 兼容性问题。  感觉这个挺好,可以捕获当前事件作用对象,如event.srcElement.tagName可以捕获活动标记名称。...:当前事件源, 我们可以调用各种属性 就像:document.getElementById("")这样功能, 经常有人问 firefox 下 event.srcElement 怎么用,在此详细说明...: IE下,event对象有srcElement属性,但是没有target属性;Firefox下,event对象有target属性,但是没有srcElement属性.但他们作用是相当,即: firefox...在 ie中处理事件直接使用window.event对象即可,但在firefox中,是没有 window.event对象,函数需要使用事件时候,需要在事件发生时把事件作为参数传递给函数,不象在ie...中,事件对象是全局,随处都可以访 问.下面这个getEvent()函数可以兼容firefox和ie,只需要在访问事件对象函数开始调用getEvent()即可,不用再把事件作为 参数传递.以下代码已经实验通过

10K50

PHP面向对象-对象方法调用和参数传递

对象方法调用调用对象方法,需要先创建对象,然后使用对象名和方法名调用该方法。...在上面的示例中,我们首先定义了一个名为 Person 类,并在该类中定义了一个名为 sayHello() 方法。该方法将输出一条包含对象 $name 属性问候语。...最后,我们使用对象名和方法名调用 sayHello() 方法,并输出结果。对象方法参数传递在 PHP 中,我们可以在对象方法中传递参数。对象方法参数传递方式与普通函数相同。...最后,我们调用 $calculator 对象 add() 方法,并传递两个参数 10 和 20。最终,将 add() 方法返回结果存储在变量 $result 中,并使用 echo 语句将其输出。...除了上述示例中演示方法外,还有许多其他方式来传递参数和调用对象方法。例如,您可以使用默认参数值、可变数量参数和引用参数等等。这些概念超出了本文范围,但您可以通过查看 PHP 文档来了解更多信息。

1.9K10

JavaScript this 小结纯粹函数调用作为对象方法调用作为构造函数调用apply 调用

那么,this值是什么呢? 函数不同使用场合,this有不同值。 总的来说,this就是函数运行时所在环境对象。...下面分情况,详细讨论 纯粹函数调用 函数最通常用法,属全局性调用,this即代表全局对象。 ?...运行结果是1 作为对象方法调用 函数还可以作为某个对象方法调用,这时this就指这个上级对象 ? 结果:1 作为构造函数调用 通过这个函数,可以生成一个新对象。this就指这个新对象。 ?...运行结果为1 为了表明这时this不是全局对象,我们对代码做一些改变: ? 运行结果为2,表明全局变量x值根本没变。 apply 调用 apply()是函数一个方法,作用是改变函数调用对象。...它第一个参数就表示改变后调用这个函数对象。因此,这时this指就是这第一个参数。 ? apply()参数为空时,默认调用全局对象。因此,这时运行结果为0,证明this指的是全局对象

2.6K20

DOM事件基本概念大总结(前端必备)

DOM2 级事件处理 直接调用该 dom 对象事件属性,并将相应执行函数赋予它 addEventListener() 和 dom.on(事件) = 函数 利用 dom 对象事件属性直接赋予一个执行函数...无法删除通过匿名定义添加执行函数。 封装跨浏览器事件处理函数 因为 IE 独树一帜,又因为 IE 属于 windows 用户标配;所以兼容需要考虑。...这样一来就不会继续捕获下去了 IE 事件对象 为什么不能统一呢,非要学两套 IE 事件对象与 DOM 级有一定差异 常用属性 cancelable 默认值为 false,true 为取消冒泡。...IE event 对象时作为 window 对象一部分存在,可以通过 window.event 来获取 通过文档对象赋值方法,必须要指定 window.event ,直接使用 event...但是这两个方法下 event 对象使用有区别,特别是在 IE 浏览器上 在 window对象下触发整个页面的加载; window.addEventListener('load', function

1.8K20

oninput onpropertychange「建议收藏」

,是onpropertychangeIE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效。...onchange触发事件必须满足两个条件: a)当前对象属性改变,并且是由键盘或鼠标事件激发(脚本触发无效) b)当前对象失去焦点(onblur); 也就是说并不是我们在打字时候就会触发...onpropertychange 只要当前对象属性发生改变,都会触发事件,但是它是IE专属; 在textarea中,如果想捕获用户键盘输入,用onkeyup检查事件就可以了,但是onkeyup...,是onpropertychangeIE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效。...onchange触发事件必须满足两个条件: a)当前对象属性改变,并且是由键盘或鼠标事件激发(脚本触发无效) b)当前对象失去焦点(onblur); 也就是说并不是我们在打字时候就会触发

50740

面试官:考你几个简单事件问题吧

addEventListener可以添加第三个参数,表示是捕获还是冒泡阶段调用,如果为true时候表示捕获阶段调用,如果是false的话表示冒泡阶段调用,默认是冒泡阶段调用(undefined相当于是...attachEvent如果添加多个事件处理程序那么先执行后添加后执行先添加,这与addEventListener恰好相反(IE9和IE10修改了执行顺序和addEventListener一样了,先添加先执行...如何获取事件对象event?...通常情况下事件处理程序第一个参数就是event对象,如下: btn.addEventListener("click",function (event){ // event 就是事件对象 通常习惯...body(或者window对象),img,script(IE9+),link(IE和Opera支持)。 点击一下鼠标前后会调用那些事件? mousedown > mouseup > click。

1.1K30

静态拦截iOS对象方法调用简易实现

最近出现了几篇关于二进制重排启动优化文章。所有方案中都需要事先统计所有的函数调用情况,并根据函数调用频次来进行代码重排。 这些函数调用中,OC对象方法调用最多。...统计OC对象方法调用可以在运行时通过第三方库比如fishhook来Hook所有objc_msgSend调用来实现,也可以在编译后链接前通过静态插桩方式来实现Hook拦截。...本文所介绍是第三种静态Hook方案,也是依赖于静态库这个前提来实现对objc_msgSend函数进行Hook,从而实现在编译前链接后OC对象方法调用插桩。 这个方案实现原理很简单。...因为静态库其实只是一个编译阶段中间产物,静态库目标文件中所有引用外部符号会保存到一张字符串表中,所有函数调用都只是记录了函数名称在字符串表索引位置,在链接时会才会根据符号名称来替换为真实函数调用指令...---- 采用本文中所介绍静态Hook方法好处是我们不必Hook所有的OC方法调用,而是可以有选择进行特定对象和类方法调用拦截。

1.8K30

frida反射调用对象方法与字段

该篇文章主要介绍当我们碰到参数或者返回值是一个对象时,如何通过frida反射调用对象方法(methods)与获取该对象字段(fields) 添加测试frida反射调用demo app 写一个测试类...,其中包含字段(fields)int类型count、String类型plainText 及多个简单方法。...其中display方法参数为ParametersTest对象, 在文中,我们要hook display方法并hook它参数ParametersTest对象反射调用ParametersTest对象所有方法及打印...val1) { getReflectFields(val1);//打印所有字段(fields)类型、名称、值 getReflectMethod(val1)//hook ParametersTest对象所有方法...name is: " + (field.getName())); send("field value is: " + field.get(val1)); }) } 结果如下: frida反射调用类中方法

3.9K20

dotnet C# 调用委托 GetInvocationList 对象分配

本文也叫跟着 Stephen Toub 大佬学性能优化系列,这是我从 Stephen Toub 大佬给 WPF 框架做性能优化学到知识,在热路径下,也就是频繁调用模块,如果调用了委托 GetInvocationList...方法,那么将视委托大小,每次创建不同大小新数组对象,而在频繁调用模块,将会创建大量对象 如以下代码一个委托,当然对于事件来说也是如此 Action action =...112 112 112 112 112 112 112 // 不水了 这是因为在底层实现,调用 GetInvocationList 方法代码如下 public override sealed...如果在调用频繁模块里面,不断调用 GetInvocationList 方法,将会有一定性能损耗。...如在 WPF 移动鼠标等逻辑里面 一个优化方法是,如果指定委托或事件加等次数比调用 GetInvocationList 次数少,如 WPF PreNotifyInput 等事件,此时可以通过在加等时候缓存起来

60930

对象属性方法调用两种方法

json格式创建一个对象: //        用原生形式创建对象(也叫用json格式创建对象)就是花括号新建         var mix2={color:'骚粉色',         size:'...            alert('可以打电话')         },         surf:function(){             alert('mix当然可以上网')         }     } 调用属性两种...:  1.对象名.属性调用 alert(mix2.color);//调用对象color属性 2.对象名['属性名']; alert(mix2['color'])//同样可以调用对象color属性...调用方法两种方法: 调用属性方法和属性类型, 对象名.函数名() mix2.call();//调用对象call方法 2.对象名['函数名']() mix2....['call']();//也可以调用对象call方法

94720

如何阻止冒泡&&浏览器默认行为

阻止事件冒泡 什么是事件冒泡这里就不再赘述了,网上文章一大把,这里就简述一下如何阻止事件冒泡,阻止事件冒泡在使用浏览器原生API情况下,是需要分情况考虑,毕竟有个个性浏览器IE,这里分为IE实现和...属性支持,设置了之后也会无效,所以建议兼容语法是: function eventCallback(e){ e = e||window.event; if(e.stopPropagation...: 相同点是两者都能阻止标准事件注册方式注册事件 (addEventListener,IE是attachEvent)向父级节点继续冒泡 不同点从名字上可以看出,Immediate立即意思,event.stopImmediatePropagation...不止能阻止往父级节点冒泡,还能阻止当前节点其它事件继续执行(比如往一个元素上注册了多个事件,那么在第一个事件执行时候,通过调用event.stopImmediatePropagation,会阻止其它事件执行...,如果在一个不可撤销事件上调用preventDefault,会抛出错误,所以建议在调用之前判断事件是否可被取消.

2.1K40

jimojianghu

现在使用这段代码,已经彻底无效,要想解决问题,得想新方案。 话不多说,下面先给出具体解决办法。 触控板 要禁止触控板缩放行为,需要处理鼠标滚轮事件:wheel 。...这些值兼容性较差,Chrome支持,IE\Firefox\Safari不支持。...addEventListener 第三个属性还可以取布尔值,指示是否能冒泡。 需要注意是:对于第三个参数,IE只支持布尔值,不支持属性对象 options;而部分属性值,也有浏览器不支持。...once: Boolean,表示 listener 在添加之后最多只调用一次。如果是 true, listener 会在其被调用之后自动移除。...signal:AbortSignal,该 AbortSignal abort() 方法被调用时,监听器会被移除。Safari不支持。

3.8K00

事件高级

方法监听注册方式  w3c 标准 推荐方式  addEventListener() 它是一个方法  IE9 之前 IE 不支持此方法,可使用 attachEvent() 代替  特点...:同一个元素同一个事件可以注册多个监听器  按注册顺序依次执行 1.2 事件监听 addEventListener()事件监听(IE9以后支持) eventTarget.addEventListener...(type, listener[, useCapture]) eventTarget.addEventListener()方法将指定监听器注册到 eventTarget(目标对象)上,当该对 象触发指定事件时...事件对象 什么是事件对象 事件发生后,跟事件相关一系列信息数据集合都放到这个对象里面,这个对象就是事件对象。 比如: 谁绑定了这个事件。... 标准写法:利用事件对象里面的 stopPropagation()方法 e.stopPropagation()  非标准写法:IE 6-8  利用事件对象 cancelBubble 属性

1.2K10

事件高级

1.2 事件监听 addEventListener()事件监听(IE9以后支持) eventTarget . addEventListener (type, listener[, useCapture]...) eventTarget.addEventListener()方法将指定监听器注册到 eventTarget(目标对象)上,当该对象触发指定事件时,就会执行事件处理函数。...3. addEventlistener (type, listener[, useCapture])第三个参数如果是true,示在事件捕 获阶段调用事件处理程序;如果是false (不写默认就是false...事件对象 什么是事件对象 事件发生后,跟事件相关一系列信息数据集合都放到这个对象里面,这个对象就是事件对象。 比如: 谁绑定了这个事件。...●标准写法:利用事件对象里面的stopPropagation ()方法 e.stopPropagation() ●非标准写法: IE 6-8利用事件对象cancelBubble属性 e. cancelBubble

1.5K41

django小技巧之html模板中调用对象属性或对象方法

url(r’^$’,views.index,name=’index’), ] 以上基本配置完成,下面演示在模板中调用对象方法: 定义模型类: 为了不用迁移,定义模型类要和test2数据库结构一样...–调用对象属性– {{hero.showname}}<!–调用对象方法,但不能给方法传递参数– <!...pymysql pymysql.install_as_MySQLdb() 再次启动web服务成功;浏览器访问:http://192.168.255.70:8000/ 完成验收在html模板文件中调用对象属性和对象方法...您可能感兴趣文章: 简单了解Django模板使用 django模板语法学习之include示例详解 解决Django模板无法使用perms变量问题方法 基于Django模板中数字自增(详解) Django...模板变量如何传递给外部js调用方法小结 python Django模板使用方法 编写自定义Django模板加载器简单示例 python Django模板使用方法(图文)

3.3K21
领券