日期:2014-05-16 浏览次数:20569 次
不依赖其他的代码库,仅仅一个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对象作用域...
?