javascript下4个跨浏览器必备的函数
JavaScript浏览器 函数 必备
2023-06-13 09:14:16 时间
下面四个函数就是其中的一部分。
首先我们要添加一段浏览器检测脚本:
复制代码代码如下:
首先我们要添加一段浏览器检测脚本:
/************************************
*检测浏览器
***********************************/
varuser=navigator.userAgent;
varbrowser={};
browser.opera=user.indexOf("Opera")>-1&&typeofwindow.opera=="object";
browser.khtml=(user.indexOf("KHTML")>-1||user.indexOf("AppleWebKit")>-1||user.indexOf("Konqueror")>-1)&&!browser.opera;browser.ie=user.indexOf("MSIE")>-1&&!browser.opera;
browser.gecko=user.indexOf("Gecko")>-1&&!browser.khtml;
if(browser.ie){
varie_reg=/MSIE(\d+\.\d+);/;
ie_reg.test(user);
varv=parseFloat(RegExp["$1"]);
browser.ie55=v<=5.5;
browser.ie6=v<=6;
}
一)添加事件绑定bind()
这个想必大家都已知道。IE的事件绑定函数是attachEvent;而Firefox,Safari是addEventListener;Opera则两种都支持。下面进行封装。
/************************************
*添加事件绑定
*@paramobj:要绑定事件的元素
*@paramtype:事件名称。不加"on".如:"click"而不是"onclick".
*@paramfn:事件处理函数
************************************/
functionbind(obj,type,fn){
if(obj.attachEvent){
obj["e"+type+fn]=fn;
obj[type+fn]=function(){obj["e"+type+fn](window.event);}
obj.attachEvent("on"+type,obj[type+fn]);
}else
obj.addEventListener(type,fn,false);
}
例如添加一个页面点击事件:
bind(document,"click",function(){
alert("Hello,World!!");
});
二)删除事件绑定unbind()
和bind()函数参数相同,功能相反。
/************************************
*删除事件绑定
*@paramobj:要删除事件的元素
*@paramtype:事件名称。不加"on".如:"click"而不是"onclick"
*@paramfn:事件处理函数
************************************/
functionunbind(obj,type,fn){
if(obj.detachEvent){
obj.detachEvent("on"+type,obj[type+fn]);
obj[type+fn]=null;
}else
obj.removeEventListener(type,fn,false);
}
三)获取元素的计算样式
计算样式也叫最终样式,也就是元素最终呈现出来的样式。IE用的是元素的currentStyle属性,而其他浏览器则是标准的document.defaultView.getComputedStyle()方法。
/************************************
*返回元素的计算样式
*@paramelement:元素
*@paramkey:样式名称(骆驼)
************************************/
functiongetStyle(element,key){
//参数不正确
if(typeofelement!="object"||typeofkey!="string"||key=="")
returnfalse;
//不透明度
if(key=="opacity"){
if(browser.ie){
varf=element.filters;
if(f&&f.length>0&&f.alpha){
return(f.alpha.opacity/100);
}
return1.0;
}
returndocument.defaultView.getComputedStyle(element,null)["opacity"];
}
//浮动
if(key=="float"){
key=(browser.ie?"styleFloat":"cssFloat");
}
if(typeofelement.currentStyle!="undefined"){
returnelement.currentStyle[key];
}else{
returndocument.defaultView.getComputedStyle(element,null)[key];
}
}
IE和其他浏览器的透明度机制不一样,这里统一用opacity表示透明度。还有,由于float是JavaScript的保留字,所以浏览器对其进行了转义,IE用的是styleFloat,其他则为cssFloat。这里统一为float。
例如:获取透明度
vara=document.getElementById("test");
varopacity=getStyle(a,"opacity");
四)DOM加载完毕事件绑定domready()
domready和window.onload有所不同,window.onload是页面所有元素全部加载完毕,包括图像,视频等一些东西。而一般情况下我们不需要等那么久,而只需要DOM可用即可。
/************************************
*domready
*@paramfn:要执行的函数
************************************/
functiondomready(fn){
//参数不正确
if(typeoffn!="function")
returnfalse;
if(typeofdocument.addEventListener=="function"){//非IE浏览器
document.addEventListener("DOMContentLoaded",fn,false);
return;
}
var_this=arguments.callee;
if(_this.ready)//如果DOM已经加载完毕,则直接执行
returnfn();
if(!_this.list)//创建一个待执行函数数组
_this.list=[];
_this.list.push(fn);
if(_this.done)return;//正在循环检测则返回
(function(){//循环检测
_this.done=true;
try{
document.documentElement.doScroll("left");
}catch(error){
setTimeout(arguments.callee,0);
return;
}
//DOM加载完毕,执行所有待执行函数
_this.ready=true;
for(vari=0,l=_this.list.length;i<l;i++){
_this.list[i]();
}
})();
}
例如:
domready(function(){
alert("DOM加载完毕!");
});
相关文章
- js android 换行符,JavaScript字符串换行符?
- 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档
- JavaScript 数据类型与运算符(下)
- JavaScript面向对象思想
- 经常会采坑的javascript原型应试题_2023-02-23
- JavaScript判断浏览器版本详解编程语言
- 用JavaScript处理URL的两个函数代码
- javascript一个判断浏览器类型的函数(类)
- 多浏览器兼容的动态加载JavaScript与CSS
- javascript浏览器判断绑定事件arguments转换数组数组遍历
- javascript检测浏览器类型和版本的代码
- JavaScript操作键盘的Enter事件(键盘任何事件),兼容多浏览器
- javascript整除实现代码
- javascript中的一些注意事项更新中
- JavaScript中的变量声明早于赋值分析
- javascript兼容所有浏览器的DOM扩展功能
- web性能优化之javascript性能调优
- JavaScript设置IFrame高度自适应(兼容各主流浏览器)
- JavaScript定时器详解及实例
- javascript使用百度地图api和html5特性获取浏览器位置
- javascript跨浏览器的属性判断方法
- JavaScript中一个奇葩的IE浏览器判断方法
- JavaScript学习笔记之Function对象