请实现鼠标点击任意标签,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. Active Directory中获取域管理员权限的攻击方法

    Active Directory中获取域管理员权限的攻击方法         译:by  backlion 0x00 前言 攻击者可以通过多种方式在Active Directory中获得域管理员权限, ...

  2. Git config配置

    git获取帮助git help config git config --help man git-config   git config --global user.name "fuleyi ...

  3. JSP2 特性

    JSP2 新特性 1.直接配置 JSP 属性 2.表达式语言 3.简化的自定义标签 API 4.Tag 文件语法 如果要使用 JSP2 语法,web.xml 文件必须使用 Servlet2.4 以上版 ...

  4. 「Python」python绘制图表

    介绍一种简单而又功能强大的绘制图形或报表的包—pyecharts,一个基于Echarts(基于JS的数据可视化库)的图标类库,除了绘制常见的折线图.柱状图.饼图.箱型图和散点图外,还可以绘制3D柱状图 ...

  5. Python urllib urlretrieve函数解析

    Python urllib urlretrieve函数解析 利用urllib.request.urlretrieve函数下载文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Ur ...

  6. Parencodings(模拟)

    ZOJ Problem Set - 1016 Parencodings Time Limit: 2 Seconds      Memory Limit: 65536 KB Let S = s1 s2 ...

  7. web项目中的 log4net的配置

    最近用log4net,网上查了很多资料,照着网上的配置大多都不管用,可能我还是有什么地方配置的不对.看出来的朋友平指出.下面是我自己亲测的,可以用! 1.web项目中的web.config 配置log ...

  8. R2—《R in Nutshell》 读书笔记(连载)

    R in Nutshell 前言 例子(nutshell包) 本书中的例子包括在nutshell的R包中,使用数据,需加载nutshell包 install.packages("nutshe ...

  9. 【CODEVS】1922 骑士共存问题

    [算法]二分图最大匹配(最大流) [题解]按(i+j)奇偶性染色后,发现棋子跳到的地方刚好异色. 然后就是二分图了,对于每个奇点向可以跳到的地方连边,偶点不需连(可逆). 所以题目要求转换为求二分图上 ...

  10. scrapy爬虫框架介绍

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...