12 ADS.js库(第二版本)
2014-10-09 10:36
190 查看
前面的 第11篇文章 用到了这个版本的ADS.js
ADS相关代码.rar (17.3 KB)
下载次数: 36
/** * @author 赵磊 2009-04-25 */ (function(){ //ADS命名空间 Advanced DOM Scripting if(!window.ADS) { window.ADS={}; } /******************************** * Chapter 1 *********************************/ //确定浏览器是否与整个库兼容 //例子 alert(ADS.getEvent()); function isCompatible(other){ if(other===false ||!Array.prototype.push ||!Object.hasOwnProperty ||!document.createElement ||!document.getElementsByTagName ){ return false; } return true; } window.ADS.isCompatible=isCompatible; //依据id取得元素 //例子 ADS.$('bu1','bu2') function $(){ var elements=new Array(); //查找作为参数提供的所有元素 for(var i=0;i<arguments.length;i++) { var element=arguments[i]; //如果该参数是一个字符串,假设它是一个id if(typeof element=='string') { element=document.getElementById(element); } //如果只提供了一个参数,则立即返回这个元素 if(arguments.length==1) { return element; } //否则将它添加进数组 elements.push(element); } //返回包含多个被请求元素的数组 return elements; } window.ADS.$=$; //添加事件 //例子 ADS.addEvent(window,'load',test6); // ADS.addEvent(window,'load',test5); //可以为一个对象添加多个事件 function addEvent(node,type_,listener){ //检查兼容性 if(!isCompatible()){return false;} if(!(node=$(node))){return false;} if(node.addEventListener) { //W3C的方法 node.addEventListener(type_,listener,false); return true; }else if(node.attachEvent) { //MS IE的方法 node['e'+type_]=listener; node[type_]=function() { node['e'+type_](window.event); } node.attachEvent('on'+type_,node[type_]); return true; } //若两种方法都不具备 return false; } window.ADS.addEvent=addEvent; //删除事件 //例子 ADS.removeEvent(window,'load',test6); function removeEvent(node,type,listener){ if(!(node=$(node))) {return false;} if(node.removeEventListener) { //W3C的方法 node.removeEventListener(type,listener,false); return true; } else if(node.detachEvent) { // MS IE 的方法 node.detachEvent('on'+type,node[type]); node[type]=null; return true; } //若两种方法都不具备 return false; } window.ADS.removeEvent=removeEvent; //依据className 查找元素(集合) //例子 ADS.getElementsByClassName("className","*",document); //返回 数组 function getElementsByClassName(className,tag,parent){ parent=parent||documetn; if(!(parent=$(parent))){return false;} //查找所有匹配的标签 var allTags=(tag=="*"&&parent.all)?parent.all:parent.getElementsByTagName(tag); var matchingElements=new Array(); //创建一个正则表达示 className=className.replace(/\-/g,"\\-"); var regex=new RegExp("(^|\\s)"+className+"(\\s|$)"); var element; for(var i=0;i<allTags.length;i++) { element=allTags[i]; if(regex.test(element.className)){ matchingElements.push(element); } } return matchingElements; } window.ADS.getElementsByClassName=getElementsByClassName; //反复隐显 //例子 ADS.toggleDisplay('id'); // ADS.toggleDisplay('id','block'); function toggleDisplay(node,value){ if(!(node=$(node))){return flase;} if(node.style.display!='none'){ node.style.display='none'; }else{ node.style.display=value||''; } return true; } window.ADS.toggleDisplay=toggleDisplay; //在指定元素后面插入一个元素 //ADS.insertAfter("bu1","bu8") //ADS.insertAfter(ADS.$("bu1"),ADS.$("bu8")) function insertAfter(node,referenceNode){ if(!(node=$(node))){return false;} if(!(referenceNode=$(referenceNode))){return false;} return referenceNode.parentNode.insertBefore(node,referenceNode.nextSibling); } window.ADS.insertAfter=insertAfter; //删除指定元素的所有子元素 function removeChild(parent){ if(!(parent=$(parent))) return false; while(parent.firstChild){ parent.firstChild.parentNode.removeChild(parent.firstChild); } return parent; } window.ADS.removeChild=removeChild; //给指定节点添加子节点, 添加在已有子节点的前面 // function prependChild(parent,newChild){ if(!(parent=$(parent))) return false; if(!(newChild=$(newChild))) return false; if(parent.firstChild) { //如果存在一个 子节点,则在这个节点之前插入 parent.insertBefore(newChild,parent.firstChild) }else{ //如果没有子节点,则直接插入 parent.appendChild(newChild); } return parent; } window.ADS.prependChild=prependChild; // 获得事件对象 function getEvent(){ if(window.event) { return window.event; } var f=getEvent.caller; while(f!=null) { var e = f.arguments[0]; if(e && (e.constructor==MouseEvent||e.constructor==Event||e.constructor==KeyboardEvent)) return e; f=f.caller; } } window.ADS.getEvent=getEvent; /******************************** * Chapter 2 *********************************/ //把函数func,的上下文环境改为obj对象 function bindFunction(obj,func) { return function(){ func.apply(obj,arguments); }; } window.ADS.bindFunction=bindFunction; /** * Retrieve the size of the browser window. */ function getBrowserWindowSize() { var de = document.documentElement; // window.innerWidth for most browsers // document.documentElement.clientWidth for MSIE in strict mode // document.body.clientWidth for MSIE in quirks mode return { 'width':( window.innerWidth || (de && de.clientWidth ) || document.body.clientWidth), 'height':( window.innerHeight || (de && de.clientHeight ) || document.body.clientHeight) } }; window['ADS']['getBrowserWindowSize'] = getBrowserWindowSize; })();
ADS相关代码.rar (17.3 KB)
下载次数: 36
相关文章推荐
- Lomboz插件的安装与配置[Eclipse 3.0,3.1.x与3.2.x版本]第二部分
- 第二版本的计划
- 分享一个分层架构音乐网站源码(第二版本)一步一步构造(二):用户需求的分析与处理
- ASM 翻译系列第二弹:ASM 12C 版本新特性
- 万能函数第一版本-针对个数确定参数(第二版本实现参数不定)
- Linux Centos7安装Oracle12c第二版本
- 《Unity3D/2D游戏开发从0到1(第二版本)》 书稿完结总结
- [Python]第二讲:2.x与3.x版本区别
- 分享一个分层架构音乐网站源码(第二版本)一步一步构造(一):综述
- 第二阶段-tensorflow程序图文详解(九)TensorFlow版本兼容性
- 画图板第二版本
- [RXNA]RXNA第二版本全新上线(2008年2月27日)
- 图解U-Boot(没有SPL的uboot早期版本):第二阶段源码分析
- 《Unity3D/2D游戏开发从0到1(第二版本)》 书稿完结总结
- CCNA Discovery第二学期 (版本 4.1)
- CCNA Discovery第二学期 (版本 4.1)
- 8月全球操作系统版本份额:XP逆势上扬 回归第二
- DISC行为理论技术手册 第二版本发布
- 第二.CUDA的环境搭建----32位版本与64位版本的迷茫
- ADS.js库(第二版本)