请实现鼠标点击任意标签,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服务器必须进行身份验证. vi打开编辑redis配置文件:[root@martin etc]# vi /usr/local/redis/etc/redis.conf 在约1 ...

  2. bzoj2054: 疯狂的馒头(并查集)

    每个区间只被覆盖一次,求每个点被哪种区间覆盖或者某个区间是否已经被覆盖过都可以用并查集做. 做法:每个点都指向当前被覆盖区间的右端点+1的位置,某个点的下一个没被覆盖的点是gf(i),同理如果某个区间 ...

  3. bzoj2296: 【POJ Challenge】随机种子(思维题/水题)

    有点类似CF某场div2T1... 前面接上1234567890000000,后面加上x+(1234567890000000%x)就可以保证是x的倍数了 #include<iostream> ...

  4. 解题:HNOI 2008 玩具装箱

    题面 搞了一晚上斜率优化,大概懂了一点,写写 原来常用的优化dp方法:做前缀和,预处理,数据结构维护 现在有转移方程长这样的一类dp:$dp[i]=min(dp[i],k[i]*x[j]+y[j]+c ...

  5. Java Socket TCP编程

    package com; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * Socket Se ...

  6. mac命令行快捷键

    其实不想每次输入host和user,可以在 ~/.ssh/config文件写上配置alias信息,以后ssh的时候根据alias即可.如: Host alias-name HostName ip_ad ...

  7. 安装黑苹果的config.plist

    前提条件:有mac真机.目前在测试虚拟机可行性 第一步:制作U盘启动盘 1.在 app store 下载 mac OS sierra 镜像 2.格式化 U 盘,gpt 格式 3.执行以下命令(具体名称 ...

  8. JS获取URL中参数值(QueryString)的4种方法分享

    方法一:正则法 function getQueryString(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(& ...

  9. 前端PHP入门-035-Session的实例

      登陆例子:(请注意一定要自己敲一遍,不要CV大法) 首先上一下成果图,激起同学们写的欲望,登录页如下: 点击登陆之后如下: 说明哦了,么问题.接下来自己实现一下. 首先数据库信息: 新建一个名为 ...

  10. Spring整合JMS(四)——事务管理(转)

    *注:别人那复制来的 Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理.这将允许JMS应用利用Spring的事务管理特性.Jm ...