`

Kad -- 自己写的JS浮动广告代码封装器 支持FF/IE

阅读更多

不依赖其他的代码库,仅仅一个js文件,代码尚不完善,支持FF,问题颇多,用到共用变量 致使不能new多个实例对象

代码改进中...

Kad = function(){
} ;
Kad.prototype.meta = {
	author: "vb2005xu | http://vb2005xu.iteye.com" ,
	version: "0.1",
	date: "2009-8-30 19:34:12" ,
	description: 'Kad 是自定义的 页面广告的封装器'
} ;

/**
 * 漂浮广告
 */
Kad.FloatAD = function(){
	this.template = '<div id="@{id}" style="position:absolute;display:none;z-index: 100; top: 0; left: 0;">' +
		'<a href="@{target-url}" target="_blank">' +
		'<img src="@{img-url}" border="0" width="@{width}" height="@{height}"/>' +
		'</a></div>';
};

Kad.FloatAD.prototype = {
	id: + new Date() ,
	target: 'http://localhost' ,
	img: {
		url: '',width: '',height: ''
	},
//	
	set: function(id,target,img_url,w,h){
		this.id = id ;
		this.target = target;		
		this.img.src = img_url ;
		this.img.width = w ;
		this.img.height = h ;
		
	} ,
	compile: function(){
		this.template = this.template.replace(/@{id}/g,this.id)
			.replace(/@{target-url}/g,this.target).replace(/@{img-url}/g,this.img.src)
			.replace(/@{width}/g,this.img.width).replace(/@{height}/g,this.img.height) ;
	} ,
//	
	init: function(){
		this.compile();
		//将div追加到body后面
		var body = document.getElementsByTagName('body')[0] ;
		body.innerHTML = this.template + body.innerHTML;
	} , 
	start: function(){
		this.init();
		this.run();
	}
	,	
	run: function(){
		var floatImg = document.getElementById(this.id);
		floatImg.style.display = '' ;
	    var delay = 10; //控制每次执行间隔的时间,做越大移动得越慢;
	    var speed = 1; //控制每次执行移动的距离,值越大移动得越快;
	    var flagX = 0;
	    var flagY = 0;
	    
	    flowImg = function () {
	    	
	    	function toPixel(str1) {
		    //该函数用于去掉数值后面的px,并将之转化为数字。
		        var oldLen = str1.length;
		        var newLen = oldLen - 2;
		        
		        str2 = str1.slice(0, newLen);
		        str3 = parseInt(str2);
		        
		        return str3;
		    }
	    	
//	        var bWidth = document.body.clientWidth;
//	        var bHeight = document.body.clientHeight;
//	        var bLeft = document.body.scrollLeft;
//	        var bTop = document.body.scrollTop;
	        var bWidth = document.documentElement.clientWidth;
	        var bHeight = document.documentElement.clientHeight;
	        var bLeft = document.documentElement.scrollLeft;
	        var bTop = document.documentElement.scrollTop;
	        
	        var iWidth = floatImg.offsetWidth;
	        var iHeight = floatImg.offsetHeight;
	        var iLeft = toPixel(floatImg.style.left);
	        var iTop = toPixel(floatImg.style.top);
	        
	        //下面一段控制横向移动
	        if(iLeft < (bWidth - iWidth) && flagX == 0) {
	            floatImg.style.left = (iLeft + speed) + "px";
	        }
	        else if(iLeft >= (bWidth - iWidth) && flagX ==0) {
	            flagX = 1;
	        }
	        else if(iLeft > 0 && flagX == 1) {
	            floatImg.style.left = (iLeft - speed) + "px";
	        }
	        else if(0 >= iLeft && flagX == 1) {
	            flagX = 0;
	        }
	        
	        //下面一段控制纵向移动
	        if(iTop < (bHeight - iHeight) && flagY == 0) {
	            floatImg.style.top = (iTop + speed) + "px";
	        }
	        else if(iTop >= (bHeight - iHeight) && flagY ==0) {
	            flagY = 1;
	        }
	        else if(iTop > 0 && flagY == 1) {
	            floatImg.style.top = (iTop - speed) + "px";
	        }
	        else if(0 >= iTop && flagY == 1) {
	            flagY = 0;
	        }
	    }
	    
	    var imgInterval = setInterval("flowImg()", delay);
	    floatImg.onmouseover = function() {clearInterval(imgInterval);}
	    floatImg.onmouseout = function() {imgInterval = setInterval("flowImg()", delay);}
		
	} 
} ;

 

附件中包括完整代码和实例....

 

问题: 尚不能很清晰的清楚了解js对象作用域...

 

  • Kad.rar (12.7 KB)
  • 下载次数: 87
1
1
分享到:
评论
2 楼 vb2005xu 2011-06-01  
新版

Kad = function(){
};
Kad.prototype.meta = {
	author: "vb2005xu | http://vb2005xu.javaeye.com" ,
	version: "0.1",
	date: "2009-8-30 19:34:12" ,
	description: 'Kad 是自定义的 页面广告的封装器'
};

/**
 * 漂浮广告
 */
Kad.FloatAD = function(){
	this.divWrapper = document.createElement('div');
	this.divWrapper.style['position'] = 'absolute';
	this.divWrapper.style['display'] = 'none';
	this.divWrapper.style['zIndex'] = '100';
	this.divWrapper.style['left'] = '0px';
	this.divWrapper.style['top'] = '0px';
	
	this.template = '<div style="position:absolute;z-index: 101">' +
		'<a href="@{target-url}" target="_blank">' +
		'<img src="@{img-url}" border="0" width="@{width}" height="@{height}"/>' +
		'</a>' +
		'</div>' +
		'<iframe style="position:absolute;width:100%;height:100%;background:#fff;border:0;z-index: 100"></iframe>' +
		'<div style="position:absolute;z-index: 100"></div>';
};

Kad.FloatAD.prototype = {
	id: + new Date() ,
	target: 'http://localhost' ,
	img: {
		url: '',width: '',height: ''
	},
//	
	set: function(id,target,img_url,w,h){
		this.id = id;
		this.target = target;
		this.img.src = img_url;
		this.img.width = w;
		this.img.height = h;
		
	} ,
	compile: function(){
		this.template = this.template.replace(/@{target-url}/g,this.target)
			.replace(/@{img-url}/g,this.img.src)
			.replace(/@{width}/g,this.img.width)
			.replace(/@{height}/g,this.img.height);
	} ,
//	
	init: function(){
		this.compile();
		
		this.divWrapper.id = this.id;
		this.divWrapper.style['width'] = this.img.width + 'px';
		this.divWrapper.style['height'] = this.img.height + 'px';
		this.divWrapper.innerHTML = this.template;
		
		//将div追加到body后面
		var body = document.getElementsByTagName('body')[0];		
		body.appendChild(this.divWrapper);
	} , 
	start: function(){
		this.init();
		this.run();
	}
	,	
	run: function(){		
		this.divWrapper.style['display'] = '';
		
	    var delay = 10; //控制每次执行间隔的时间,做越大移动得越慢;
	    var speed = 1; //控制每次执行移动的距离,值越大移动得越快;
	    var flagX = 0;
	    var flagY = 0;
	    
	    var divWrapper = this.divWrapper;
	    
	    flowImg = function () {
	    	
	    	function toPixel(str1) {
		    //该函数用于去掉数值后面的px,并将之转化为数字。
		        var oldLen = str1.length;
		        var newLen = oldLen - 2;
		        
		        str2 = str1.slice(0, newLen);
		        str3 = parseInt(str2);
		        
		        return str3;
		    }
	    	
		    // ie 7/8 firefox 上可以
	        var bWidth = document.body.clientWidth;
	        var bHeight = document.body.clientHeight;
	        var bLeft = document.body.scrollLeft;
	        var bTop = document.body.scrollTop;
	        
//	        var bWidth = document.documentElement.clientWidth;
//	        var bHeight = document.documentElement.clientHeight;
//	        var bLeft = document.documentElement.scrollLeft;
//	        var bTop = document.documentElement.scrollTop;
	        
	        var iWidth = divWrapper.offsetWidth;
	        var iHeight = divWrapper.offsetHeight;
	        var iLeft = toPixel(divWrapper.style.left);
	        var iTop = toPixel(divWrapper.style.top);
	        
	        //下面一段控制横向移动
	        if(iLeft < (bWidth - iWidth) && flagX == 0) {
	            divWrapper.style.left = (iLeft + speed) + "px";	        	
	        }
	        else if(iLeft >= (bWidth - iWidth) && flagX ==0) {
	            flagX = 1;
	        }
	        else if(iLeft > 0 && flagX == 1) {
	            divWrapper.style.left = (iLeft - speed) + "px";
	        }
	        else if(0 >= iLeft && flagX == 1) {
	            flagX = 0;
	        }
	        
	        //下面一段控制纵向移动
	        if(iTop < (bHeight - iHeight) && flagY == 0) {
	            divWrapper.style.top = (iTop + speed) + "px";
	        }
	        else if(iTop >= (bHeight - iHeight) && flagY ==0) {
	            flagY = 1;
	        }
	        else if(iTop > 0 && flagY == 1) {
	            divWrapper.style.top = (iTop - speed) + "px";
	        }
	        else if(0 >= iTop && flagY == 1) {
	            flagY = 0;
	        }
	    }
	    
	    var imgInterval = setInterval("flowImg()", delay);
	    this.divWrapper.onmouseover = function() {clearInterval(imgInterval);}
	    this.divWrapper.onmouseout = function() {imgInterval = setInterval("flowImg()", delay);}
		
	} 
};
1 楼 vb2005xu 2011-06-01  
引用

让Flash乖乖躲到Div浮动层下去
发表于1187 天前 ⁄ 工作学习 ⁄ 暂无评论

今天正打算把刚做完的一个网站提交给客户时突然发现网站首页中因为放了好多Flash,结果把几个浮动的都挡住了。

第一想到的当然是把浮动层的z-index调高,但似乎z-index对Flash不起作用。

又想到:把Flash设为透明呢?一试之下果然好用:只要在Flash对象加入页面时生成的HTML代码中加入以下参数就可以让Div浮动层从Flash下露出来了:<param name=”wmode” value=”transparent” />

另外,放狗搜了一下,发现另外一个更专业的参数:<param name=”wmode” value=”opaque” />

transparent是负责透明的,显出浮动只不过是他的一个副业而已;而opaque才是专门负责让Flash位于其它层下的。

从嘟嘟的Blog上抄来了一段对这两个参数的详细说明:

    wmode 属性/参数

    值 Window | Opaque | Transparent

    说明:

    (可选)允许使用 Internet Explorer 4.0 中的透明 Flash 内容、绝对定位和分层显示功能。此标记/属性仅在带有 Flash Player ActiveX 控件的 Windows 中有效。

    “Window”在 Web 页上用影片自己的矩形窗口来播放应用程序。“Window”表明此 Flash 应用程序与 HTML 层没有任何交互,并且始终位于最顶层。
    “Opaque” 使应用程序隐藏页面上位于它后面的所有内容。
    “Transparent”使 HTML 页的背景可以透过应用程序的所有透明部分显示出来,并且可能会降低动画性能。
    “Opaque windowless”和“Transparent windowless”都可与 HTML 层交互,从而允许 SWF 文件上方的层遮蔽应用程序。

    这两种选项之间的差异在于“Transparent”允许透明,因此,如果 SWF 文件的某一部分是透明的,则 SWF 文件下方的 HTML 层可以透过该部分显示出来,而“opaque”则不会显示。

    如果忽略此属性,默认值为 Window。仅适用于 object。

相关推荐

    宁波柯力 KAD-4(不锈钢)数据采集器使用说明书.doc

    4. 具有自我识别功能,便于故障诊断:KAD-4 数据采集器具有自我识别功能,能够实时监控自己的工作状态,方便故障诊断和维护。 三、 数据采集器与仪表通讯格式 KAD-4 数据采集器支持多种通讯协议,能够与不同的仪表...

    K.A.D高清网络摄像机KAD-711-200W-IR固件

    K.A.D高清网络摄像机 型号:KAD-711-200W-IR 文件系统版本T38C-ONVIF V2.4.0的升级固件,升级后,连接中维、海康录像机OK

    simple-bootstrap-node:kad-dht(go-libp2p-kad-dht)的简单引导节点。

    该项目是基于go-libp2p的kad-dht引导节点的简单实现。 用法: 默认运行(绑定'0.0.0.0'端口:4001): 对于linux: ./bootnode.amdx64-linux linux 对于Windows: bootnode.amdx64-windows.exe 或使用自定义运行...

    KAD-168门禁用户使用手册

    【KAD-168门禁系统概述】 KAD-168门禁系统是一款采用先进的感应式射频技术的设备,旨在为商务机构、办公室、工厂、住宅小区等场所提供安全、便捷的出入口控制解决方案。其核心优势在于操作简单、安全可靠,无机械...

    js-libp2p-kad-dht:DHT for libp2pJavaScript实现

    js-libp2p-kad-dht 基于的Kademlia DHTJavaScript实现。 首席维护者 。 目录 安装 npm 在Node.js中使用 原料药 贡献 执照 安装 npm &gt; npm i libp2p-kad-dht 在Node.js中使用 const KadDHT = require ( 'libp...

    A performance evaluation of the kad-protocol.pdf

    在这些应用中,Kad提供了强大的数据分发能力,支持大量的并发用户。 - **工作原理**:Kad协议基于一种高效的分布式哈希表技术,它能够快速找到所需的数据。每个节点都有一个唯一的标识符,并且网络中的所有节点按照...

    kad-java:kad-java

    kad-java kad关键问题流程 算法的三个参数:keyspace,k和α keyspace 即ID有多少位,决定每个节点的通讯录有几层 k 每个一层k-bucket里装k个node的信息,即&lt;node&gt; 每次查找node时,返回k个node的信息,对于某个特定的...

    go-libp2p-dht-overlay:[WIP]一种向go-libp2p-kad-dht添加overlay dht支持的解决方法

    项目开发者正在尝试通过这个工作在进程中的解决方案(WIP)来引入overlay DHT的支持,这无疑为IPFS(InterPlanetary File System)及其衍生项目如IPFS Lite带来了新的可能。 go-libp2p-dht是Go语言实现的libp2p库的...

    89KAD-弹窗广告拦截软件(试用)不包含源码

    这是未成型的软件,用于试用并接纳用户的意见,不包含源代码

    kad-rtc:带有WebRTC的Kademlia,用于浏览器和node.js。 用打字稿写

    kad-rtc是一个基于Kademlia协议的P2P(对等网络)系统,结合了WebRTC技术,使得它能够在浏览器和node.js环境中运行。Kademlia是一种分布式哈希表(DHT),它允许网络中的节点高效地存储和查找数据。在P2P网络中,...

    kad-ipv6:向kad添加ipv6支持

    Kademlia DHT for Node支持IPv6的更新实现。 用法 使用NPM安装。 我不太可能将其推送到NPM的存储库中,但是您可以直接从github上获取它,如下所示: npm install --save git://github....

    simple-dht-logger:使用Raspberry,Arduino记录温度和湿度

    使用Arduino编辑器将/arduino/dht.ino源代码上传到Arduino 使用/schema.sql创建mysql表 将/dht-logger.js的第86〜89行的mysql访问信息修改为您自己的 将/dht-server.js的第3-6行中的mysql连接信息修改为您自己的 ...

    一份成熟的DHT-KAD实现,带测试示例

    KAD(Kademlia)是DHT的一种实现,它采用了一种XOR距离算法来定位节点,并通过逐层搜索的方式找到目标数据,具有较高的效率和扩展性。 这份源码实现的DHT-KAD网络,被广泛应用于BT(BitTorrent)软件中,BT是一种点...

    marketing-Kad-E:营销ENIB项目,MS2

    在“营销-Kad-E: 营销ENIB项目,MS2”中,我们主要探讨的是一个基于JavaScript的营销项目,适用于ENIB(Ecole Nationale d'Ingénieurs de Brest,法国布雷斯特国立工程师学院)硕士二年级(MS2)的学生。...

    kad协议研究后的全部详细资料

    - "emule中节点加入kad网络过程(源代码详解).wps"可能详细阐述了eMule节点如何按照kad协议加入网络的过程,涉及节点寻址、邻居发现和路由表建立等步骤。 通过以上文档,我们可以深入学习和理解kad协议的各个方面,...

    KAD Countdown-crx插件

    【KAD Countdown-crx插件】是一款专为用户设计的扩展程序,主要功能是提供敲钟倒计时服务。这款插件的英文名是"KAD Countdown",它旨在为用户提供一个直观且易于使用的倒计时工具,尤其适用于关注特定事件、纪念日...

    P2P模型研究——KAD协议的算法实现

    项目文件“p2p_kad”可能包含了源代码、编译脚本、配置文件等,其中源代码部分可能包括了节点的初始化、路由表管理、查找算法、数据存储等功能模块。通过分析和运行这个项目,我们可以更深入地理解KAD协议的运作原理...

    SEC KAD7001 PDF

    TES2700万用表 芯片 SEC 740B KAD7001

    电骡eMule-0.47c-VeryCD版开源代码及源码分析

    《电骡eMule-0.47c-VeryCD版开源代码及源码分析》 电骡eMule是一款著名的P2P(点对点)文件分享软件,以其高效和可靠的文件传输特性赢得了广大用户的喜爱。0.47c是eMule的一个经典版本,而VeryCD版则是由中国VeryCD...

    KAD协议原理<转>

    BitComet、BitSpirit等软件相继采用与BitTorrent兼容的DHT技术,实现了无追踪器的下载方式。此外,eMule等其他P2P软件也融入了类似Kad的技术,尽管它们在key、value和nodeID的计算方法上有所不同。 #### 四、Kad...

Global site tag (gtag.js) - Google Analytics