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(在线转码网页)并不会转换展开运算符. 展开运算符大体分为两种用法:展 ...
随机推荐
- Meeting HDU - 5521 虚点建图
Problem Description Bessie and her friend Elsie decide to have a meeting. However, after Farmer John ...
- Azure 上SQL Database(PaaS)Time Zone时区问题处理
在Azure上面的PaaS时间都是以UTC时间为准(云的世界里基本上都是以UTC时间为标准的),所以以前在本地SQL Server上面常用的GetDate()方法会碰到问题,在中国获取的时间会被当前时 ...
- I/O多路复用和异步I/O
一.I/O模式 对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间.所以说,当一个read操作发生时,它会经历两个阶段: ...
- 教你破解MyEclipse到2016年【图文详解】
1.首先确定JDK以及环境变量没有问题.因为破解工具包里的run.bat是调用java命令执行jar包,如果环境变量没有配置好,那就运行不了了.2.解压破解包,双击[run.bat]打开破解界面: 3 ...
- ① 设计模式的艺术-01.单例(Singleton)模式
单例模式为何要出现 在工作过程中,发现所有可以使用单例模式的类都有一个共性,那就是这个类没有自己的状态,换句话说,这些类无论你实例化多少个,其实都是一样的. 如果我们不将这个类控制成单例的结构,应用中 ...
- 51nod 1140 矩阵相乘结果的判断
给出三个N*N的矩阵A, B, C,问A * B是否等于C? Input 第1行,1个数N.(0 <= N <= 500) 第2 - N + 1行:每行N个数,对应矩阵A的元素.(0 ...
- 【BZOJ】3991: [SDOI2015]寻宝游戏 虚树+DFS序+set
[题意]给定n个点的带边权树,对于树上存在的若干特殊点,要求任选一个点开始将所有特殊点走遍后返回.现在初始没有特殊点,m次操作每次增加或减少一个特殊点,求每次操作后的总代价.n,m<=10^5. ...
- phpcms直接取子栏目的内容、调用点击量的方法
子栏目里面的内容可以直接取,而不需要通过循环. {$CATEGORYS[$catid][catname]}//取子栏目的栏目名称 {$CATEGORYS[$catid][image]}//取子栏目的栏 ...
- thinkphp学习,蛋疼啊~新公司要弄这个。。。
common/function.php 看里面函数大全,啥玩意都有 Tpl中的是模板文件,action中是控制类,Model中有action用到的一些东西,例: class IndexAction e ...
- Docker 配置国内镜像拉取中心,Configure docker to use faster registries in China.
Networking in China is really bad when it comes to using some cloud based tools like docker, it's us ...