灵活实用的页面广告实例

灵活实用的页面广告实例

目前,许多主页上流行放置一个浮动层的广告图像(通常位于页面右下方),显示在文字层之上,当页面上下滚动时,广告图像并不随页面滚动,它总能在窗口中保持一个固定位置。本程序就是这种广告效果的一个实例,并在原有的基础上增加了拖动功能,如果在浏览页面时需要观察的内容正好被广告图像遮挡,可将广告图像拖到其它位置。并解决了图像拖动中鼠标按键的Click动作与执行广告图像链接的Click动作之间的冲突。直接点击广告图像即可执行图像链接,而在图像拖动过程中的鼠标按下和释放的动作不会触发广告链接。这样改进后,用户在浏览你的页面时会感到更加方便、自然。
程序是由JavaScript脚本语言编写的,并不复杂,为了节省文章篇幅起见,就不在此处对程序原理作过多的说明了,而是在后面的程序文档中给出详实的注释语句。读者通过阅读注释说明就会明了实现的原理,并可从中了解到如何在屏幕上定位图像,拖动图像等许多动态HTML语句的编程方法。如果想直接使用这个程序,只要将演示页面的相应内容复制到自己页面内的对应位置就可以使用了。
程序文档分为二个部分,dragtest.htm是演示用的主页面程序,mydrag.js是由主页面调用的外部脚本程序文件,还使用了一个演示用的图像文件:http://edu.cnzz.cn/NewsInfo/myimage.gif 。将主页面文件、脚本文件和图像文件放置在相同目录下,就可正常使用。具体的程序文档内容如下:
(一)·简化的主页面演示程序文档:dragtest.htm
<html>
<head>
<title>可拖动的广告图像演示页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<STYLE TYPE="text/css">
<!--
/*设定一个ID样式,名称中要包含DRAG字串,供程序识别可拖动元件用。*/
  #elDRAGone {  
    position: absolute;
    left: 600; top: 300;
    color: red;
    width: 120;
    height:60;
    z-index:3;
  }
-->
</STYLE>
</HEAD>
</head>
<body bgcolor="#FFFFFF" style="font-size:9pt;color:'#555500';">
<!-- 在DIV标记的属性中指定前面设定的ID样式。-->
<!-- 注意<a>标记中的事件语句, -->
<!-- 由它调用是否执行链接动作的判别函数,如果返回值为“假”, -->
<!-- 则不执行链接动作,反之则执行链接动作。-->
<DIV ID="elDRAGone"><a href="http://www.sohu.com" > <img src="http://edu.cnzz.cn/NewsInfo/myimage.gif" border="0" alt="可拖动到任意位置!"><a></DIV>
<SCRIPT LANGUAGE="JavaScript">
/*连续输出多个文字串,供页面演示用。*/
for(i=0;i<50;i++){
document.write("这是一个“可拖动的广告图像”演示程序。<br><br>");
}
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript" src=mydrag.js>
/*调用图像拖动控制程序的外部脚本文件*/
/*注意此脚本的调用要放置在body区域的下部*/
</SCRIPT>
</body>
</html>

(二)·由主页面调用的外部脚本程序文档: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

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

时间: 2024-08-31 01:45:53

灵活实用的页面广告实例的相关文章

JS实现很实用的对联广告代码(可自适应高度)_javascript技巧

本文实例讲述了JS实现很实用的对联广告代码(可自适应高度).分享给大家供大家参考.具体如下: 这是一款很实用的基于JS+CSS+DIV的网页对联广告代码,自适应网页高度,也就是始终保持在一定调试,这款暂时没有关闭功能. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-lr-useful-adv-auto-height-codes/ 具体代码如下: <html> <head> <meta http-equiv="

清除页面广告?身为前端,自己做一款简易的chrome扩展吧

大家肯定有这样的经历,浏览网页的时候,左右两端广告,诸如"屠龙宝刀,点击就送",以及最近火的不行的林子聪37传奇霸业什么"霸业面具,霸业吊坠"的魔性广告总是充斥我们的眼球. 当然有现成的扩展程序或者插件(两者概念稍有不同)可以清除页面广告,但是既然身为一名程序猿,尤其是FEDer,为什么不尝试一下自己写一个清除广告的扩展程序呢.其实,编写一个浏览器扩展程序十分简单,尤其是chrome扩展,可以完全使用前端技术(HTML/CSS/JS)完成一个自己编写的扩展程序.让我

如何在PHP开启gzip页面压缩实例

PHP开启gzip页面压缩实例 示例一(用php的内置压缩函数): <?PHP if(Extension_Loaded('zlib')) Ob_Start('ob_gzhandler'); Header("Content-type: text/html"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht

asp.net输出重写压缩页面文件实例代码

 这篇文章主要介绍了asp.net输出重写压缩页面文件实例代码,需要的朋友可以参考下 例子    代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.Web

javascript实现json页面分页实例代码

 这篇文章主要介绍了javascript实现json页面分页实例代码,需要的朋友可以参考下 下午有个朋友问json 数据怎么分页 就捣鼓了一个东东出来    下面直接代码: 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns

使用Ajax局部更新Razor页面的实例代码

Razor功能非常强大,但是本身并不能做到无刷新,所以需要配合ajax使用 本文就做一个简单例子,实现Razor配合ajax做到局部刷新. 首先,我们创建一个MVC项目 让我们创建一个简单的Controller Book 然后对其添加一个视图,并且添加上一些简单的Html代码 @{ ViewBag.Title = "Index"; Layout = null; } <!DOCTYPE html> <html> <head> <meta http

常用页面广告位置及价值分析

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 很大一部分站长的收入来自页面广告代码的放置,好的设置可以让广告效果最大化,本人将结合自己的实际经验给大家一一分析常用页面广告位置及分析其价值所在. 1.页头通栏广告 展现方式: 页头通栏广告显示于百科页面正上方,通常使用950x90的大小的 图片或 Flash 的形式.当前页面有多个页头通栏广告时,系统会随机选取其中一个显示. 价值分析: 由

Session过期后自动跳转到登录页面的实例代码_java

最近做了一个项目其中有需求,要实现自动登录功能,通过查阅相关资料,打算用session监听来做,下面给大家列出了配置监听器的方法: 1.在项目的web.xml文件中添加如下代码: <!--添加Session监听器--> <listener> <listener-class> 监听器路径 </listener-class> </listener> 2.编写java类. public class SessionListener implements

DedeCMS删除后台登录/管理首页页面广告

首先删除后台登录页面广告图片: 打开DedeCMS根目录,找到dedetemplets文件夹(dede为默认文件夹,有可能你后来为了安全考虑修改过这个文件夹的名字,就是登录目录文件夹),在里面找到login_ad.htm文件,删除他或者重命名一下.刷新后台登录页面,广告没有了吧! 然后删除后台管理首页广告的链接: 还是在上面提到的dedetemplets文件夹里,找到index_body.htm文件,用非记事本软件打开编辑(记事本保存容易出现编码错误),删除188行--193行的所有代码,保存.