`
simgsg
  • 浏览: 96143 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

attachEvent、addEventListener、detachEvent、removeEventListener

 
阅读更多
<p>属于DOM<br><br>attachEvent、addEventListener添加事件到对象<br><br>detachEvent、removeEventListener注销对象事件</p>
<p></p>
<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br><br>&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br>&lt;head&gt;<br> &lt;title&gt;JS&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br> &lt;input id="para" type="text" /&gt;<br> &lt;script type="text/javascript"&gt;<br>function test(){<br>alert("test");<br>}<br><br>function pig(){<br>alert("pig");<br>}<br><br>window.onload = function(){<br> var element = document.getElementById("para");<br> if(element.addEventListener){ // firefox , w3c<br> element.addEventListener("focus",test,false);<br> element.addEventListener("focus",pig,false);<br> } else { // ie<br> element.attachEvent("onfocus",test);<br> element.attachEvent("onfocus",pig);<br> }<br>}<br>&lt;/script&gt;<br>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p>
<p>****************实例结束**************************</p>
<p></p>
<p>JS:attachEvent和addEventListener 使用方法<br>attachEvent与addEventListener区别<br>适应的浏览器版本不同,同时在使用的过程中要注意<br>attachEvent方法 按钮onclick<br>addEventListener方法 按钮click<br><br>两者使用的原理:可对执行的优先级不一样,下面实例讲解如下:<br>attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列)<br><br>addEventListener方法 用于 Mozilla系列<br><br>举例: document.getElementById("btn").onclick = method1;<br>document.getElementById("btn").onclick = method2;<br>document.getElementById("btn").onclick = method3;如果这样写,那么将会只有medhot3被执行<br><br>写成这样:<br>var btn1Obj = document.getElementById("btn1"); //object.attachEvent(event,function);<br>btn1Obj.attachEvent("onclick",method1);<br>btn1Obj.attachEvent("onclick",method2);<br>btn1Obj.attachEvent("onclick",method3);执行顺序为method3-&gt;method2-&gt;method1<br><br>如果是Mozilla系列,并不支持该方法,需要用到addEventListener var btn1Obj = document.getElementById("btn1");<br>//element.addEventListener(type,listener,useCapture);<br>btn1Obj.addEventListener("click",method1,false);<br>btn1Obj.addEventListener("click",method2,false);<br>btn1Obj.addEventListener("click",method3,false);执行顺序为method1-&gt;method2-&gt;method3<br><br>使用实例:<br><br>1。 var el = EDITFORM_DOCUMENT.body; <br>//先取得对象,EDITFORM_DOCUMENT实为一个iframe<br>if (el.addEventListener){<br>el.addEventListener('click', KindDisableMenu, false);<br>} else if (el.attachEvent){<br>el.attachEvent('onclick', KindDisableMenu);<br>}2。 if (window.addEventListener) {<br>window.addEventListener('load', _uCO, false);<br>} else if (window.attachEvent) {<br>window.attachEvent('onload', _uCO);<br>}</p>
<p></p>
<p><span style="font-size: medium;">js 监听事件,ie 火狐 javascript addEventListener attachEvent</span></p>
<p>&lt;head&gt;<br>&lt;script type='text/javascript'&gt;<br>function init() {<br>// 跳转处理<br>var handler = function(){<br> var host = document.location.href;<br> if(host.indexOf('jx163.cn') &gt;= 0)<br> document.location = "/";<br> else ;<br>};<br><br>// 添加监听<br>if (window.addEventListener) {<br> window.addEventListener('DOMContentLoaded', handler, false);<br> window.addEventListener('load', handler, false);<br>} else if (window.attachEvent)<br> window.attachEvent('onload', handler);<br>else<br> window.onload = handler;<br>} // end init<br><br>init();<br>&lt;/script&gt;<br><br>&lt;/head&gt;<br>&lt;body&gt;<br>--------------------</p>
<p>window和firefox下的event</p>
<p>--------------------</p>
<p>&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br>&lt;!--<br>function hh(e)<br>{<br>alert(arguments[0]);<br>e=window.event||e;<br>var el=e.srcElement||e.target;<br>alert(el.value);<br>}<br>//--&gt;<br>&lt;/SCRIPT&gt;<br>&lt;INPUT id ="button2" value ="hahahahah" TYPE="button" onclick="hh(event);"&gt;</p>
<p>--------------------</p>
<p>test</p>
<p>--------------------</p>
<p>if(WebComm.getOS() == "MSIE")<br> {<br> obj.setCapture ();<br> }<br> else<br> {<br> document.addEventListener("mousemove",WebComm.MoveDiv,false);<br> }</p>
<p>if(WebComm.getOS() == "MSIE")<br> {<br> obj.releaseCapture ();<br> }<br> else<br> {<br><br> document.removeEventListener("mousemove",WebComm.MoveDiv,false);<br> }</p>
<p>------------------</p>
<p>1.火狐不能对innerText支持,也不知道为什么。火狐支持innerHTML但却不支持 innerText,所以上网查了一 下,原来它改支持textContent来实现innerText,不过实现得没有那么好,默认把多余的空格也保留了。如果不用textContent, 如果字符串里面不包含HTML代码也可以用innerHTML代替<br><br>2.禁止选取网页内容:<br>在IE中一般用js:obj.onselectstart=function(){return false;}<br>而火狐用CSS:-moz-user-select:none<br><br>3.滤镜的支持(例:透明滤镜):<br>IE:filter:alpha(opacity=10);<br>火狐:-moz-opacity:.10;<br><br>4.捕获事件:<br>IE:obj.setCapture() 、obj.releaseCapture()<br>火狐: document.addEventListener("mousemove",mousemovefunction,true);<br>document.removeEventListener("mousemove",mousemovefunction,true);<br><br>5.获取鼠标位置:<br>IE:event.clientX、event.clientY<br>火狐:需要事件函数传递事件对象<br>obj.onmousemove=function(ev){<br>X= ev.pageX;Y=ev.pageY;<br>}<br><br>6.DIV等元素的边界问题:<br>比如:设置一个div的CSS::{width:100px;height:100px;border:#000000 1px solid;}<br>IE中:div的宽度(包括边框宽度):100px,div的高度(包括边框宽度):100px;<br>而火狐:div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px;<br><br><br>所以在做这个兼容IE和火狐的拖动窗口时,在js和css的写法上要动点脑筋,给大家两个小技巧.<br>一.判断浏览器类型:<br>var isIE=document.all? true:false;<br>我写了一个变量,如果支持document.all语法那么isIE=true,否则isIE=false<br><br>二.在不同浏览器下的CSS处理:<br>一般可以用!important来优先使用css语句(仅火狐支持)<br>比如:{border-width:0px!important;border-width:1px;}<br>在火狐下这个元素是没有边框的,在IE下边框宽度是1px<br><br>又发现几处XHTML与正常状态下的JS、CSS的区别,前阶段写了兼容IE/火狐的拖动窗口发现了这两个浏览器的几处区别。今天又写了兼容XHTML的 版本,因为现在不是流行web标准嘛,偶不能落后啊!再说现在ASP.NET中的所有页面都是应用XHTML标准的,如果在布局页面中删了这句标准代码, 里面的布局和控件visual studio就不显示了。</p>
<p>呵呵,在网页开头加了这个代码就是所谓的XHTML标准了&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br><br>改了一下JS和CSS,调试了N次,发现了XHTML标准下的几个不同点:<br>1.document.documentElement 与 document.body<br>代码中设置页面的CSS时一定要用:document.documentElement <br>比如:document.documentElement.style.overflow='hidden';<br>overflow-X、overflow-Y 这两个分坐标属性XHTML是不支持的;<br><br>2.在取得网页窗口区域和获取滚动条位移距离时也要用document.documentElement <br>即这四个属性(clientWidth、clientHeight、scrollLeft、scrollTop)一定要用document.documentElement <br>但是document.body.appendChild()和document.body.removeChild()却是可以用的,而且用 document.documentElement.appendChild()和 document.documentElement.removeChild()代替却会报错;<br><br>所以我总结了一下仅clientWidth、clientHeight、scrollLeft、scrollTop和document.documentElement.style时才用document.documentElement<br><br>3.呵呵,加了这个标准以后IE的边框问题也出现了变化,现在和火狐趋于一致了,是不是这个就是XHTML的优点——跨浏览器的标准<br>上篇文章提到:<br>设置一个div的CSS::{width:100px;height:100px;border:#000000 1px solid;}<br>IE中(正常情况):div的宽度(包括边框宽度):100px,div的高度(包括边框宽度):100px;<br><a href="http://firefox.sun-sky.com.cn/">火狐</a>(正常情况)::div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px;<br><br>加了XHTML标准后的(IE和火狐打和了,^_^):<br>IE中(XHTML):div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px;<br>火狐(XHTML)::div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px;</p>
<p>--------------------</p>
<p>对于IE的attachEvent方法可能大家都比较熟,现在说说FireFox的addEventListener的用法。</p>
<p>addEventListener的参数一共有三个,语法为:</p>
<p class="code_js">element.addEventListener(type,listener,useCapture)</p>
<p>下面是详解</p>
<ul>
<li>其中element是要绑定函数的对象。</li>
<li>type是事件名称,要注意的是"onclick"要改为"click","onblur"要改为"blur",也就是说事件名不要带"on"。</li>
<li>listener当然就是绑定的函数了,记住不要跟括号</li>
<li>最后一个参数是个布尔值,表示该事件的响应顺序,下面重点介绍一下addEventListener的第3个参数(useCapture)。</li>
</ul>
<p>userCapture若为true,则浏览器采用Capture,若为false则采用bubbing方式。建议用false,看个例子吧。</p>
<p>html代码</p>
<p class="code_html">&lt;div id="div_test"&gt; &lt;input type="button" id="btn_test" value="se4.cn技术基地" /&gt; &lt;/div&gt;</p>
<p>window.onload=function(){ document.getElementById("div_test").addEventListener("click",test1,false); document.getElementById("btn_test").addEventListener("click",test2,false); } function test1(){ alert("外层div触发") } function test2(){ alert("内层input触发") }</p>
<p>如果userCapture是true则test1先触发,如果userCapture是false则test2先触发。</p>
分享到:
评论

相关推荐

    JavaScript通过attachEvent和detachEvent方法处理带参数的函数

    在探讨JavaScript中使用attachEvent和detachEvent方法处理带有参数的函数之前,我们先要了解这两个方法分别是什么以及它们的作用。attachEvent和detachEvent是早期IE浏览器特有的,用于为DOM元素添加或移除事件监听...

    ie8-eventlisteners:IE8的Polyfill,用于addEventlistener和removeEventListener

    `addEventListener` 和 `removeEventListener` 是两个在现代浏览器中广泛使用的DOM(文档对象模型)API,它们允许我们向元素添加或移除事件处理函数,实现事件驱动的编程模式。然而,这些方法在Internet Explorer 8...

    原生js事件的添加和删除的封装

    在IE浏览器中添加或删除事件用attachEvent、detachEvent。在其他标准浏览器中则用addEventListener、removeEventListener。下面的对事件的添加和删除做了封装。直接看代码吧! /** * @description 事件绑定,兼容...

    JS在IE和FF下attachEvent,addEventListener学习笔记

    ### JavaScript中的事件处理:attachEvent与addEventListener #### 一、引言 JavaScript 是一种广泛使用的脚本语言,它被用于实现网页的动态效果和交互功能。随着 Web 技术的发展,浏览器之间的差异也逐渐显现出来...

    javascript事件处理模型实例说明.doc

    在事件监听方面,不同浏览器对事件的处理存在差异,早期的Internet Explorer使用attachEvent和detachEvent方法来添加和删除事件监听器,而Firefox等浏览器则使用addEventListener和removeEventListener方法。...

    js 动态给元素添加、移除事件的实现方法

    文章提到了在IE浏览器中不支持addEventListener和removeEventListener方法,而使用attachEvent和detachEvent方法来添加和移除事件处理程序。attachEvent使用的是 'on' 加事件名的方式,如'onfocus'。 3. IE浏览器中...

    javascript事件模型介绍.doc

    IE模型不支持事件捕获,只能处理冒泡阶段的事件,并且注册和删除事件处理器的方法与DOM2不同,使用attachEvent和detachEvent函数。IE事件模型的特点包括只能冒泡、不能捕捉,以及event.cancelBubble属性用于中断冒泡...

    addEventListener 的用法示例介绍

    此外,`removeEventListener` 和 `detachEvent` 分别用于在W3C和IE浏览器中移除已添加的事件监听器。W3C版本: ```javascript target.removeEventListener(type, listener, useCapture); ``` IE版本: ```...

    javascript打造跨浏览器事件处理机制[Blue-Dream出品]

    首先,W3C标准定义了两个关键的事件处理方法:`addEventListener`和`removeEventListener`。这两个方法都属于`EventTarget`接口,该接口通常实现于`Node`或`Window`接口,这意味着所有的DOM元素都可以使用这些方法来...

    Bootstrap-datetimepicker先天bug修复,兼容IE6+

    4. **事件处理**:IE6-8不支持addEventListener和removeEventListener,需要使用attachEvent和detachEvent替代。同时,事件冒泡和捕获机制在IE中与其他浏览器有所不同,需注意处理。 5. **盒模型**:IE6默认使用...

    事件模型在各浏览器中存在差异

    Internet Explorer(尤其是版本6、7、8)采用了非标准的`attachEvent`和`detachEvent`方法来添加和移除事件处理程序,而其他现代浏览器如Chrome、Safari、Firefox则遵循W3C标准,只支持`addEventListener`和`...

    javaScript事件机制兼容(详细整理).doc

    为了实现跨浏览器的兼容性,可以定义一个通用函数insertEvent,根据浏览器的不同,选择使用addEventListener或者attachEvent方法。 ```javascript function insertEvent(obj, Event, fun) { if (obj....

    select2_ie8.rar

    例如,addEventListener和removeEventListener在IE8中需要替换为attachEvent和detachEvent。在使用Select2时,我们需要确保这些事件绑定和解绑的方式是IE8兼容的。 在实际应用中,我们还需要关注一些其他细节,比如...

    JavaScript事件处理程序详解

    IE使用attachEvent和detachEvent方法来绑定和解绑事件。这些方法是在window对象上使用的,而非元素本身。在eventUtil中,也对这些方法进行了封装处理,使得在IE环境下也能添加和移除事件监听器。 在了解了这些基础...

    浏览器事件动态注册和取消

    此外,对于不支持`addEventListener`和`removeEventListener`的老版本IE浏览器,可以使用`attachEvent`和`detachEvent`作为替代。它们的工作原理类似,但参数顺序不同,且不支持事件冒泡,这需要注意适配。 最后,...

    jquery兼容ie8的tabs选项卡插件tabslet

    tabslet插件可能使用了jQuery的事件绑定方法(如.on()和.off())来兼容IE8的attachEvent和detachEvent。 4. **特征检测(Feature Detection)**:而不是依赖浏览器检测,tabslet可能也利用特征检测来确定哪些特性...

    JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题.docx

    错误②:在IE事件处理程序中,错误地使用了`attach`或`detach`而不是`attachEvent`和`detachEvent`。这两个是IE浏览器特有的事件绑定和解绑方法,必须注意它们的拼写和大小写。修正拼写错误后,事件处理程序才能在IE...

    js拖动窗口

    对于旧版本的Internet Explorer(如IE6),事件处理方式有所不同,需要使用`attachEvent`和`detachEvent`代替`addEventListener`和`removeEventListener`。此外,IE6不支持`style.getPropertyValue`,需要使用`...

    事件高级用法及兼容写法

    在 IE 6/7/8 中,使用 `attachEvent` 和 `detachEvent` 方法来绑定和取消事件。 ```javascript element.attachEvent("on" + 事件名, 事件函数); element.detachEvent("on" + 事件名, 事件函数); ``` 这里...

Global site tag (gtag.js) - Google Analytics