JavaScript 兼容性总结
请实现鼠标点击任意标签,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 兼容性总结的更多相关文章
- IE和Firefox的Javascript兼容性总结
长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此,主要从以下几方面差异总结IE和Firefox的Javas ...
- 【总结】IE和Firefox的Javascript兼容性总结(转)
文章转自:http://www.cnblogs.com/wiky/archive/2010/01/09/IE-and-Firefox-Javascript-compatibility.html 长久以 ...
- [ 兼容 ] IE和Firefox的Javascript兼容性总结
长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此,主要从以下几方面差异总结IE和Firefox的Javas ...
- 【总结】IE和Firefox的Javascript兼容性总结
长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此,主要从以下几方面差异总结IE和Firefox的Javas ...
- 梦游前端,JavaScript兼容性
前端兼容问题出现的原因 何为操作系统?操作系统(Operating System)是管理和控制计算机硬件与软件资源的计算机程序.是的,任何的应用软件必须在操作系统的支持下运行. 大家会疑问?为什么我要 ...
- JavaScript兼容性总结一点点
JavaScript 不同浏览器之间的差异还是很大,所以js库才这么有需求,需要解决各种兼容性问题. 其实反过来,既然存在js库能解决这些兼容性问题,说明底层大部分功能还是相通的. 首先想到的是事件模 ...
- Javascript兼容性问题汇总
一.属性相关 我们通常把特征(attribute)和属性(property)统称为属性,但是他们确实是不同的概念, 特征(attribute)会表现在HTML文本中,对特征的修改一定会表现在元素的ou ...
- opacity--css + javascript兼容性代码
css设置opacity 之前看了别人写了一段关于opacity的css代码,没深入理解就copy过来自己用了一段时间,现在重新拿出来又深入研究了一下. .cla{ /* IE 8 */ -ms-fi ...
- javascript兼容性:展开运算符 ... 的降级
展开运算符 ... 是一个很好用的ES6新特性,用的好的话,可以节约很多代码. 但是作为ES6特性,它有兼容性问题,而且Babal(在线转码网页)并不会转换展开运算符. 展开运算符大体分为两种用法:展 ...
随机推荐
- redis安全性 添加访问密码
设置客户端连接访问redis服务器必须进行身份验证. vi打开编辑redis配置文件:[root@martin etc]# vi /usr/local/redis/etc/redis.conf 在约1 ...
- JavaScript的变量预解析特性
JavaScript是解释型语言是毋庸置疑的,但它是不是仅在运行时自上往下一句一句地解析的呢?事实上或某种现象证明并不是这样的,通过<JavaScript权威指南>及网上相关资料了解到,J ...
- HDU 6199 DP
gems gems gems Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- git查看/修改 用户名和邮箱
用户名和邮箱地址的作用 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变. 每次commit都会用用户名和邮箱纪录. github的contributions统计就是按邮箱来统计的. ...
- CSS选择器-常用搜集
标签选择器: div{ font-size=10px; color=red; background-color=yello; width=200px; height=200px; } <div& ...
- K-means的缺点(优化不仅仅是最小化误差)
K-means的缺点(优化不仅仅是最小化误差) #转载时,请注明英文原作David Robinson,译者Ding Chao.# 我最近遇到一个交叉验证的问题,我认为这个给我提供了一个很好的机会去用“ ...
- CSS浏览器兼容问题集-第二部分
11.高度不适应 高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用margin 或paddign 时. 例: #box {background-color:# ...
- 【BZOJ】1597 [Usaco2008 Mar]土地购买
[算法]DP+斜率优化 [题意]n(n≤50000)块土地,长ai宽bi,可分组购买,每组代价为max(ai)*max(bi),求最小代价. [题解] 斜率优化:http://www.cnblogs. ...
- 【leetcode 简单】第二十一题 相同的树
给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1 ...
- NB二人组(二)----归并排序
归并排序的思路: 归并算法程序(配合下图进行思考): def merge(li,low,mid,high): i = low j = mid + 1 ltmp=[] while i <= mid ...