`

12 ADS.js库(第二版本)

阅读更多

前面的 第11篇文章 用到了这个版本的ADS.js

 

/**
 * @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;
	
})();

 

分享到:
评论

相关推荐

    video.js+video.ads.js js视频与广告插件

    2. **HTML5优先**:它优先使用HTML5的`&lt;video&gt;`标签,如果浏览器不支持HTML5,则自动回退到Flash播放器,确保老版本浏览器也能播放视频。 3. **自定义主题**:通过CSS,开发者可以轻松地更改播放器的外观,定制符合...

    ads.rar_javascript

    标题中的“ads.rar_javascript”暗示了这个压缩包包含的是与JavaScript相关的代码,很可能用于实现广告展示或管理的第二部分。在这个场景中,我们可以深入探讨JavaScript在广告技术中的应用、基本概念以及可能涉及到...

    show_ads.rar_The Show

    2. **广告网络API**:如果代码是与某个特定的广告网络集成,如Google AdSense或AdMob,那么它可能会使用这些网络提供的API来获取和展示广告。 3. **广告拦截检测**:为了确保广告能够被看到,代码可能包含检测用户...

    ads.kernvalley.us:KernValley.US的广告制作工具网站

    2. **数据库管理**:存储和管理用户账户、广告数据和用户行为信息可能需要关系型数据库(如MySQL)或非关系型数据库(如MongoDB)。 3. **广告设计工具**:工具可能集成图形编辑功能,允许用户使用拖放界面设计广告...

    Metodista-ADS-源码.rar

    2. **数据处理**:ADS系统需要处理大量的用户数据和广告数据,因此源码中可能包含数据结构和算法,用于高效地存储、检索和分析这些数据。 3. **用户接口**:系统可能有一个用于广告主管理广告的后台界面,以及一个...

    REACT NATIVE跨平台移动应用开发 第二版.zip

    10. **第二版更新**:"React Native跨平台移动应用开发 第二版"可能涵盖了新版本的React Native特性、API变更、最佳实践和问题解决方案,以适应React Native的最新发展。 总的来说,通过学习这本书,开发者不仅能...

    JS广告轮换

    2. 显示第一个广告:初始化时,显示第一个广告项。 ```javascript ads[currentAdIndex].style.display = 'block'; ``` 3. 轮换函数:定义一个函数来切换广告。 ```javascript function rotateAds() { ads...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part1.rar

     第2章 创建可重用的对象   2.1 对象中包含什么   2.1.1 继承   2.1.2 理解对象成员   2.1.3 window对象中的一切   2.1.4 理解作用域和闭包是根本   2.2 创建你自己的对象   2.2.1 一变多:...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part2.rar

     第2章 创建可重用的对象   2.1 对象中包含什么   2.1.1 继承   2.1.2 理解对象成员   2.1.3 window对象中的一切   2.1.4 理解作用域和闭包是根本   2.2 创建你自己的对象   2.2.1 一变多:...

    Python库 | mparticle-0.12.1-py3-none-any.whl

    3. **合作伙伴集成**:该库内置了与多个第三方服务的接口,如Google Analytics、Facebook、Apple Search Ads等。这简化了与这些服务的连接和数据同步,减少了手动配置的工作量。 4. **实时数据传输**:mparticle库...

    JS实现在线打印

    如果需要打印的内容包含PDF或其他特殊格式,可能需要借助第三方库,如PDF.js,来确保正确渲染和打印。 8. **兼容性测试**: 不同浏览器对打印功能的支持程度可能会有所不同,因此在开发过程中需要进行广泛的兼容...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part3.rar

     第2章 创建可重用的对象   2.1 对象中包含什么   2.1.1 继承   2.1.2 理解对象成员   2.1.3 window对象中的一切   2.1.4 理解作用域和闭包是根本   2.2 创建你自己的对象   2.2.1 一变多:...

    常用网页广告大全2-js

    在压缩包文件中,你可能会发现各种JavaScript库,如jQuery广告插件,或者第三方广告平台的SDK,如Facebook Audience Network、Google Ad Manager的JS代码示例。这些资源可以帮助你快速集成和自定义网页广告,同时也...

    前端项目-videojs-vast-plugin.zip

    2. VAST广告标准 VAST是一种XML格式的规范,用于在视频内容中嵌入广告。它定义了广告服务器如何响应视频播放请求,以及广告数据如何在播放器中展示。VAST支持多种广告类型,包括线性(全屏)广告、非线性(叠加)...

    eschop分析大全.docx

    此外,还有`styles`、`images`等目录用于存储CSS样式和图片资源,以及`todolist.js`, `topbar.js`等JavaScript文件,它们负责前端交互和动态效果。 总的来说,EShop是一个全面的电商解决方案,涵盖了从商品展示、...

    Projeto-Integrador:Projeto Integrador 4 periodo ADS

    【标题】"Projeto-Integrador:Projeto Integrador 4 periodo ADS" 提供的信息表明,这是一个针对广告与数字媒体(ADS)专业第四学期的学生所设计的综合项目。在这个项目中,学生可能会运用到他们在课程中学到的各种...

    ASP.Net 脚本实现flash循环广告

    2. **脚本实现循环**:为了实现广告的循环播放,你可以利用JavaScript或者jQuery来控制Flash对象的属性。例如,你可以设置一个定时器,每隔一段时间更换Flash的源文件,使得不同的广告轮流展示。 ```javascript var...

    jQuery广告文字切换动画特效.zip

    2. **CSS样式**:为了实现视觉效果,我们可以为`#ad-banner`添加一些基本样式,如宽度、高度、背景色等,同时隐藏除第一个`&lt;p&gt;`元素之外的所有元素。 ```css #ad-banner { width: 100%; height: 50px; ...

    ECSHOP各文件夹功能说明 (2).pdf

    10. `js`:前端JavaScript脚本库,包括日历控件`calendar`等。 11. `languages`:语言文件夹,提供不同语言的支持,如简体中文`zh_cn`和繁体中文`zh_tw`。 12. `temp`:存放临时缓存文件,提高系统性能。 13. `...

    PHPCMS 2008 SP2 正式版.zip

    12、 修正了表单向导SQL报错问题 Parse error: syntax error, unexpected ';' 修改了模板文件/formguide/header.html {php $types = cache_read('search_type.php');} 13、 修正了表单向导在系统没有安装到根...

Global site tag (gtag.js) - Google Analytics