您的位置:首页技术开发ASP技巧 → 灵活实用的页面广告实例

灵活实用的页面广告实例

时间:2004/11/7 4:10:00来源:本站整理作者:蓝点我要评论(0)

灵活实用的页面广告实例



目前,许多主页上流行放置一个浮动层的广告图像(通常位于页面右下方),显示在文字层之上,当页面上下滚动时,广告图像并不随页面滚动,它总能在窗口中保持一个固定位置。本程序就是这种广告效果的一个实例,并在原有的基础上增加了拖动功能,如果在浏览页面时需要观察的内容正好被广告图像遮挡,可将广告图像拖到其它位置。并解决了图像拖动中鼠标按键的Click动作与执行广告图像链接的Click动作之间的冲突。直接点击广告图像即可执行图像链接,而在图像拖动过程中的鼠标按下和释放的动作不会触发广告链接。这样改进后,用户在浏览你的页面时会感到更加方便、自然。

程序是由JavaScript脚本语言编写的,并不复杂,为了节省文章篇幅起见,就不在此处对程序原理作过多的说明了,而是在后面的程序文档中给出详实的注释语句。读者通过阅读注释说明就会明了实现的原理,并可从中了解到如何在屏幕上定位图像,拖动图像等许多动态HTML语句的编程方法。如果想直接使用这个程序,只要将演示页面的相应内容复制到自己页面内的对应位置就可以使用了。

程序文档分为二个部分,dragtest.htm是演示用的主页面程序,mydrag.js是由主页面调用的外部脚本程序文件,还使用了一个演示用的图像文件:myimage.gif 。将主页面文件、脚本文件和图像文件放置在相同目录下,就可正常使用。具体的程序文档内容如下:

(一)·简化的主页面演示程序文档:dragtest.htm





可拖动的广告图像演示页面































(二)·由主页面调用的外部脚本程序文档:mydrag.js

///////外部脚本控制程序开始///////

///////程序名:mydrag.js ///////

//记录页面的垂直滚动位置的变量。

lastScrollY=0;

//在程序中校准图像在页面中的位置。

with (document.all.elDRAGone) {

style.pixelTop=offsetTop;

style.pixelLeft=offsetLeft;

}

//在页面上定位图像的函数。

function position_img() {

//计算出页面垂直滚动的偏移量。

diffY = document.body.scrollTop-lastScrollY;

//保存本次页面滚动位置。

lastScrollY=document.body.scrollTop;

//移动图像到原来的窗口位置。

document.all.elDRAGone.style.pixelTop += diffY;

}

//建立记录图像初始位置的变量,用于计算图像是否被拖动过。

originX=originY=0;

//如果图像被拖动过,则offset_pixel变量的值大于0。

offset_pixel=0;

//记录图像在文档中的现行坐标值。

currentX = currentY = 0;

//保存被拖动对象的变量。

whichEl = null;      

//onmousedown事件调用的图像抓取函数。   

function grabEl() {   

  //只允许用鼠标左键拖动!   

  if (event.button !=1) {return;}

  //将鼠标点击的对象存入whichEl变量。

  whichEl=event.srcElement;

  //判断是否为可拖动的对象。

  while(whichEl.id.indexOf("DRAG")==-1){

   whichEl=whichEl.parentElement;

   if (whichEl==null){return;}

  }

  //记录图像抓取时的初始窗口位置。

  originX=event.clientX;

  originY=event.clientY;

  //将拖动判别变量设为0值。

  offset_pixel=0;

  //校准图像在文档上的位置。

  whichEl.style.pixelLeft=whichEl.offsetLeft;

  whichEl.style.pixelTop=whichEl.offsetTop;

  //记录图像相对于文档的现行位置坐标。

  currentX=event.clientX+document.body.scrollLeft;    

  currentY=event.clientY+document.body.scrollTop;

}

//onmousemove事件调用的图像移动函数。

function moveEl() {   

  //如果没有抓取拖动的对象,则返回。   

  if (whichEl==null){return;}

  //如果拖动了图像,则将变量offset_pixel

  //赋予大于0的值,以标记图像已被拖动。

  //从而使图像在拖动完成后不执行链接功能。

  offset_X=Math.abs(event.clientX-originX);

  offset_Y=Math.abs(event.clientY-originY);

  offset_pixel=offset_X+offset_Y;

  //计算拖动时新的文档坐标的位置。

  newX=event.clientX+document.body.scrollLeft;    

  newY=event.clientY+document.body.scrollTop;

  //计算出现行位置与拖动前初始位置的偏差。

  distanceX=newX-currentX;

  distanceY=newY-currentY;

  //用现行位置更新初始位置变量。

  currentX=newX;

  currentY=newY;

  //实际移动图像的位置。

  whichEl.style.pixelLeft +=distanceX;

  whichEl.style.pixelTop +=distanceY;

  event.returnValue=false;   

}

//onmouseup函数调用的图像放置函数。

//表明拖动过程结束。

function dropEl() {  

  whichEl=null;

}

//根据图像是否被拖动过来决定是否执行

//与图像有关的链接。

function if_link(){

if(offset_pixel>0)

    //如果图像被拖动过,则此函数返回假,

    //不执行与图像有关的链接。

  return false;

else

    //否则返回真值,执行图像的链接。

  return true;

}

//改变可拖动对象为十字光标的句柄函数。

function curEl(){

Over_Element=event.srcElement;

  while(Over_Element.id.indexOf("DRAG")==-1){

   Over_Element=Over_Element.parentElement;

   if (Over_Element==null){return;}

  }

  event.srcElement.style.cursor = "move";

}



  //以下是在文档中设定的鼠标事件句柄。

  document.onmousedown = grabEl;

  document.onmousemove = moveEl;

  document.onmouseup = dropEl;

  document.onmouseover = curEl;

  //定时调用图像移动函数,此时为1秒。

  action = window.setInterval("position_img()",1000);

//////////外部脚本控制程序结束//////////////////





本程序在IE 4.0以上版本的
浏览器下使用通过。



文章署名:一帆

作者姓名:赵莉丽 .

电子邮件:cnyf@21cn.com





【本文版权归作者与奥索网共同拥有,如需转载,请注明作者及出处】    


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案