绑定事件
- var addEvent = function( obj, type, fn ) {
- if (obj.addEventListener)
- obj.addEventListener( type, fn, false );
- else if (obj.attachEvent) {
- obj["e"+type+fn] = fn;
- obj.attachEvent( "on"+type, function() {
- obj["e"+type+fn]();
- } );
- }
- };
另一个实现
- var addEvent = (function () {
- if (document.addEventListener) {
- return function (el, type, fn) {
- el.addEventListener(type, fn, false);
- };
- } else {
- return function (el, type, fn) {
- el.attachEvent('on' + type, function () {
- return fn.call(el, window.event);
- });
- }
- }
- })();
绑定onpropertychange事件
onpropertychange是微软
制造的一个事件,它在一个元素的属性发生变化的时候触发,常见的有文本的长度改变,样长改变等,FF大致和它相似的属性为oninput事件,不过它只针对textfield与textarea的value属性。safari,firefox,chrome与
opera都支持此属性。
- var addPropertyChangeEvent = function (obj,fn) {
- if(window.ActiveXObject){
- obj.onpropertychange = fn;
- }else{
- obj.addEventListener("input",fn,false);
- }
- }
复制代码
移除事件
- var removeEvent = function( obj, type, fn ) {
- if (obj.removeEventListener)
- obj.removeEventListener( type, fn, false );
- else if (obj.detachEvent) {
- obj.detachEvent( "on"+type, obj["e"+type+fn] );
- obj["e"+type+fn] = null;
- }
- };
加载事件
- var loadEvent = function(fn) {
- var oldonload = window.onload;
- if (typeof window.onload != 'function') {
- window.onload = fn;
- }else {
- window.onload = function() {
- oldonload();
- fn();
- }
- }
- }
阻止事件
- var stopEvent = function(e){
- e = e || window.event;
- if(e.preventDefault) {
- e.preventDefault();
- e.stopPropagation();
- }else{
- e.returnValue = false;
- e.cancelBubble = true;
- }
- },
如果仅仅是阻止事件冒泡
- var stopPropagation = function(e) {
- e = e || window.event;
- if (!+"\v1") {
- e.cancelBubble = true;
- } else {
- e.stopPropagation();
- }
- }
取得事件源对象
相当于Prototype.js框架的Event.element(e)
- var getEvent = function(e){
- e = e || window.event;
- var target = event.srcElement ? event.srcElement : event.target;
- return target
- }
或者这个功能更强大,我在开发datagrid时开发出来的,详细用法见《一步步教你实现表格排序(第二部分)》。
- var getEvent = function(e) {
- var e = e || window.event;
- if (!e) {
- var c = this.getEvent.caller;
- while (c) {
- e = c.arguments[0];
- if (e && (Event == e.constructor || MouseEvent ==
e.constructor)) {
- break;
- }
- c = c.caller;
- }
- }
- var target = e.srcElement ? e.srcElement : e.target,
- currentN = target.nodeName.toLowerCase(),
- parentN = target.parentNode.nodeName.toLowerCase(),
- grandN = target.parentNode.parentNode.nodeName.toLowerCase();
- return [e,target,currentN,parentN,grandN];
- }
|
相关推荐
javascript 编写跨浏览器的javascript兼容写法 js兼容
javascript 事件绑定的一些兼容写法整理非常不错,感谢
JavaScript 事件机制详细研究 ...JavaScript 事件机制是非常复杂的,它需要了解事件机制的实现方式、原理和浏览器的兼容性问题。只有深入了解这些知识点,才能编写出高效、可靠的 JavaScript 代码。
JavaScript应用实例-兼容安卓6、7的写法.js
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍_.docx
本文为大家讲解下Javascript selection的兼容性写法,感兴趣的朋友可以参考下
下面是高手整理的一些javascript在ie和ff中的兼容写法
JavaScript中BOM和DOM详解 目录 BOM(浏览器对象模型) 1. window 获取浏览器c窗口尺寸 2. screen 获取电脑屏幕大小 ...兼容性写法,封装工具 BOM(浏览器对象模型) 1. window 获取浏览器c窗口尺寸 2
本篇文章主要介绍了详解js几个绕不开的事件兼容写法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
JavaScript常用兼容语法 1.获取css样式的兼容语法 ...2.事件event兼容写法 [removed] = function(e){ var e = e || window.event; } 3.事件监听的兼容写法 function bindEvent(dom,ev,fn){ if(dom.add
IE与Firefox下javascript getyear年份不同浏览器 JavaScript 的getyear年份函数兼容性问题 先举个例子 用 Firefox 上一些网站会看到这样的提示 现在时间是 106年8月8日 而用 ie 浏览器的话就显示正常的 ...
js foreach map filter some 兼容底层实现写法
主要介绍了JS事件添加和移出的兼容写法,结合实例形式分析了javascript针对不同浏览器实现实现添加与移除事件的相关技巧与使用方法,具有一定参考借鉴价值,需要的朋友可以参考下
本篇文章主要介绍了JavaScript中浏览器兼容问题的写法小议,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
总结一部分IE和Firefox的javascript差异写法,对于像书写多浏览器兼容性更好的代码,可以参考下。
javascript 开发之网页兼容各种浏览器 前言: 关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助. 一、CSS HACK 以下两种...
下面比较了几种浏览器之间的差异,在写javascript代码时 要时刻注意这些差异