请实现鼠标点击任意标签,alert该标签的名称(注意兼容性)

function elementName(evt){

          evt = evt|| window.event;

          var selected = evt.target || evt.srcElement;

         alert(selected.tagName);

   }

 写一个获取非行间样式的函数


function getStyle(obj, attr) {
    return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, false)[attr]; // 火狐
}

设置透明度

function setOpacity(elem, value) {
    elem.filters ? elem.style.filter = 'alpha(opacity=' + value + ')' : elem.style.opacity = value / 100;
}

获得当前视口距离页面顶部的像素

function getScrollTop(){
    return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop
}

获得当前视口距离页面左边的像素

function getScrollLeft() {
    return document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft
}

tips:scrollBy(x , y)实现了基于当前位置的相对滑动,而scrollTo( x, y)则是实现了“绝对滑动”

IE6判定

if(!-[1,]) { //IE6       在IE6中[-1,].toString()为“1,”,‘-’会进行类型转换(转成数字类型),-"1,"  为NaN,所以返回!false  

} else{ //非IE6   非IE6中[-1,].toString()为“1”,‘-’会进行类型转换(转成数字类型),-"1"  为-1,所以返回!true  

}  

判定IE浏览器

if(window.VBArray){     //因为VB是微软发明的,其他浏览器无VBArray,至少可判定IE 6/7/8/9/10    

} else {  

}  

获取键盘按下的键值

document.onkeypress=function(e){
    e = e || window.event;
    e.keyCode || e.which  // 常规浏览器 || IE
}  

阻止事件冒泡

function stopProp(event) {
    event = event || window.event
    event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true;  // 常规浏览器 || IE
}

tips:这里不可使用 e.cancelBubble?e.cancelBubble = true : e.stopPropagation()  ,因为 e.cancelBubble 是一个属性(而非方法),其默认值为 false

阻止浏览器默认行为,如:按标签链接跳转

function preDef(event) {
    event = event || window.event
    event.preventDefault ? e.preventDefault() : e.returnValue = false // 常规浏览器 | IE
}

添加事件监听

// 懒加载
function addEvent(ele, eventName, func, isCapture) {
    if(ele.attachEvent){
        ele.attachEvent('on' + eventName, func)
        addEvent = function(ele, eventName, func) {
            ele.attachEvent('on' + eventName, func)
        }
    } else {
        ele.addEventListener(eventName, func, !!isCapture)
        addEvent = function(ele, func, !!isCapture){
            ele.addEventListener(eventName, func, !!isCapture)
        }
    }
}
window.addEvent = (function() {
    if(window.attachEvent){
        return function(ele, eventName, func){
            ele.attachEvent('on' + eventName, func)
        }
    } else {
        return function(ele, eventName, func, isCapture){
            ele.addEventListener(eventName, func, isCapture || false)
        }
    }
})();

删除事件监听

//删除事件
window.removeEvent = (function() {
    if(window.detach){
        return function(ele, eventName, func){
            ele.detach('on' + eventName, func)
        }
    }
    return function(ele, eventName, func, isCapture){
        ele.removeEventListener(eventName, func)
    }
})()

JavaScript 兼容性总结的更多相关文章

  1. IE和Firefox的Javascript兼容性总结

    长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此,主要从以下几方面差异总结IE和Firefox的Javas ...

  2. 【总结】IE和Firefox的Javascript兼容性总结(转)

    文章转自:http://www.cnblogs.com/wiky/archive/2010/01/09/IE-and-Firefox-Javascript-compatibility.html 长久以 ...

  3. [ 兼容 ] IE和Firefox的Javascript兼容性总结

    长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此,主要从以下几方面差异总结IE和Firefox的Javas ...

  4. 【总结】IE和Firefox的Javascript兼容性总结

    长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此,主要从以下几方面差异总结IE和Firefox的Javas ...

  5. 梦游前端,JavaScript兼容性

    前端兼容问题出现的原因 何为操作系统?操作系统(Operating System)是管理和控制计算机硬件与软件资源的计算机程序.是的,任何的应用软件必须在操作系统的支持下运行. 大家会疑问?为什么我要 ...

  6. JavaScript兼容性总结一点点

    JavaScript 不同浏览器之间的差异还是很大,所以js库才这么有需求,需要解决各种兼容性问题. 其实反过来,既然存在js库能解决这些兼容性问题,说明底层大部分功能还是相通的. 首先想到的是事件模 ...

  7. Javascript兼容性问题汇总

    一.属性相关 我们通常把特征(attribute)和属性(property)统称为属性,但是他们确实是不同的概念, 特征(attribute)会表现在HTML文本中,对特征的修改一定会表现在元素的ou ...

  8. opacity--css + javascript兼容性代码

    css设置opacity 之前看了别人写了一段关于opacity的css代码,没深入理解就copy过来自己用了一段时间,现在重新拿出来又深入研究了一下. .cla{ /* IE 8 */ -ms-fi ...

  9. javascript兼容性:展开运算符 ... 的降级

    展开运算符 ... 是一个很好用的ES6新特性,用的好的话,可以节约很多代码. 但是作为ES6特性,它有兼容性问题,而且Babal(在线转码网页)并不会转换展开运算符. 展开运算符大体分为两种用法:展 ...

随机推荐

  1. Redis基操

    Redis key-value类型的缓存数据库 指定IP和端口连接redis: ./redis-cli -h ip -p port Redis基本操作命令 命令 返回值 简介 ping PONG 测试 ...

  2. 手脱FSG 2.0 -> bart/xt

    声明: 只为纪录自己的脱壳历程,高手勿喷 1.在入口的第二行ESP定律下硬件断点然后F9运行8次(因为第9次就跑飞了) 0040955C > pushad 0040955D EB jmp //E ...

  3. Java中String的替换函数:replace与replaceAll的区别

    例如有如下x的字符串  String x = "[kllkklk\\kk\\kllkk]"; 要将里面的"kk"替换为++,可以使用两种方法得到相同的结果  r ...

  4. C#获取Json字符串中的某个值

    问题描述: json数据格式{"resCode":0,"resMag":"aaa","data":[{"par ...

  5. 前端PHP入门-012-回调函数[慎入]

    尽力而为,对于WEB前端和美工同学,比较难了!但是你们都学过JS的闭包等操作,那么这里也一定没有问题! 回调函数,可以配合匿名函数和变量函数实现更加优美.复杂的一种函数结构. 回调函数,就是在处理一个 ...

  6. c++数组遍历十种方式

    int ia[3][4] = {1,2,3,4,5,6,7,8}; //下标 for (int i = 0; i < 3; i++) {     for (int j = 0; j < 4 ...

  7. python 常用模块之ConfigParser

    在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在Python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser, Python C ...

  8. bzoj3524/2223 [Poi2014]Couriers

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3524 http://www.lydsy.com/JudgeOnline/problem.ph ...

  9. 【leetcode 简单】第四十题 求众数

    给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] 输出: 3 ...

  10. css3背景色过渡

    <!DOCTYPE html><html lang="zh-cmn-Hans"><head><meta charset="utf ...