`
marcoSpring
  • 浏览: 33162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

兼容火狐、IE、chrom且符合W3C标准的漂浮广告

阅读更多
首先写js...这简直就是废话。
   <script type="text/javascript">
<!--
//公共脚本文件 main.js
function addEvent(obj,evtType,func,cap){
    cap=cap||false;
if(obj.addEventListener){
    obj.addEventListener(evtType,func,cap);
return true;
}else if(obj.attachEvent){
        if(cap){
        obj.setCapture();
        return true;
    }else{
    return obj.attachEvent("on" + evtType,func);
}
}else{
return false;
    }
}
function getPageScroll(){
    var xScroll,yScroll;

if (self.pageXOffset) {
xScroll = self.pageXOffset;
} else if (document.documentElement && document.documentElement.scrollLeft){
xScroll = document.documentElement.scrollLeft;
} else if (document.body) {
xScroll = document.body.scrollLeft;
}

if (self.pageYOffset) {
yScroll = self.pageYOffset;
} else if (document.documentElement && document.documentElement.scrollTop){
yScroll = document.documentElement.scrollTop;
} else if (document.body) {
yScroll = document.body.scrollTop;
}

arrayPageScroll = new Array(xScroll,yScroll);
return arrayPageScroll;
}
function GetPageSize(){
    var xScroll, yScroll;
    if (window.innerHeight && window.scrollMaxY) {
        xScroll = document.body.scrollWidth;
        yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight){
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    } else {
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }
    var windowWidth, windowHeight;
    if (self.innerHeight) {
        windowWidth = self.innerWidth;
        windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    } else if (document.body) {
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }
    if(yScroll < windowHeight){
        pageHeight = windowHeight;
    } else {
        pageHeight = yScroll;
    }
    if(xScroll < windowWidth){
        pageWidth = windowWidth;
    } else {
        pageWidth = xScroll;
    }
    arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
    return arrayPageSize;
}


////////////////////////////////////////////////////////
var AdMoveConfig=new Object();
AdMoveConfig.IsInitialized=false;
AdMoveConfig.ScrollX=0;
AdMoveConfig.ScrollY=0;
AdMoveConfig.MoveWidth=0;
AdMoveConfig.MoveHeight=0;
AdMoveConfig.Resize=function(){
    var winsize=GetPageSize();
    AdMoveConfig.MoveWidth=winsize[2];
    AdMoveConfig.MoveHeight=winsize[3];
    AdMoveConfig.Scroll();
}
AdMoveConfig.Scroll=function(){
    var winscroll=getPageScroll();
    AdMoveConfig.ScrollX=winscroll[0];
    AdMoveConfig.ScrollY=winscroll[1];
}
addEvent(window,"resize",AdMoveConfig.Resize);
addEvent(window,"scroll",AdMoveConfig.Scroll);
function AdMove(id){
    if(!AdMoveConfig.IsInitialized){
        AdMoveConfig.Resize();
        AdMoveConfig.IsInitialized=true;
    }
    var obj=document.getElementById(id);
    obj.style.position="absolute";
    var W=AdMoveConfig.MoveWidth-obj.offsetWidth;
    var H=AdMoveConfig.MoveHeight-obj.offsetHeight;
    var x = W*Math.random(),y = H*Math.random();
    var rad=(Math.random()+1)*Math.PI/6;
    var kx=Math.sin(rad),ky=Math.cos(rad);
    var dirx = (Math.random()<0.5?1:-1), diry = (Math.random()<0.5?1:-1);
    var step = 1;
    var interval;
    this.SetLocation=function(vx,vy){x=vx;y=vy;}
    this.SetDirection=function(vx,vy){dirx=vx;diry=vy;}
    obj.CustomMethod=function(){
        obj.style.left = (x + AdMoveConfig.ScrollX) + "px";
        obj.style.top = (y + AdMoveConfig.ScrollY) + "px";
        rad=(Math.random()+1)*Math.PI/6;
        W=AdMoveConfig.MoveWidth-obj.offsetWidth;
        H=AdMoveConfig.MoveHeight-obj.offsetHeight;
        x = x + step*kx*dirx;
        if (x < 0){dirx = 1;x = 0;kx=Math.sin(rad);ky=Math.cos(rad);}
        if (x > W){dirx = -1;x = W;kx=Math.sin(rad);ky=Math.cos(rad);}
        y = y + step*ky*diry;
        if (y < 0){diry = 1;y = 0;kx=Math.sin(rad);ky=Math.cos(rad);}
        if (y > H){diry = -1;y = H;kx=Math.sin(rad);ky=Math.cos(rad);}
    }
    this.Run=function(){
        var delay = 10;
        interval=setInterval(obj.CustomMethod,delay);
        obj.onmouseover=function(){clearInterval(interval);}
        obj.onmouseout=function(){interval=setInterval(obj.CustomMethod, delay);}
    }
}

//-->
</script>

然后是调用,这也是废话一句
<div id="img1" style="position:absolute"><a href="http://www.google.com" target="_blank"><img src="http://www.google.com/intl/zh-CN/logos/Logo_60wht.gif" border="0" /></a></div>
<script type="text/javascript">
    <!--
        var ad1=new AdMove("img1");
        ad1.Run();

    </script>
分享到:
评论

相关推荐

    原生javascript自定义滚动条(兼容IE,火狐,chrom)

    本篇文章将深入探讨如何使用JavaScript实现自定义滚动条,并确保其在Internet Explorer(IE)、Firefox和Chrome等主流浏览器中的兼容性。 首先,我们需要理解不同浏览器对滚动条的支持情况。在CSS中,Webkit内核的...

    vimium for FireFox

    **vimium for FireFox** 是一个为Firefox浏览器设计的扩展,它借鉴了Vim编辑器的理念,让网页浏览变得更加高效,尤其是对那些熟悉Vim快捷键的用户来说。这款插件将键盘操作引入到浏览器中,使用户可以不依赖鼠标进行...

    Chrome中链接打开IE窗口插件

    这个插件允许用户在谷歌浏览器(Chrome)、火狐(Firefox)、360浏览器以及欧朋浏览器(Opera)等现代浏览器上,通过特定的URL链接来启动Internet Explorer(IE)的新窗口。这样,即使公司的某些内部项目是基于旧版...

    python ie,chrom driverServer

    在这个主题中,我们将深入探讨"python ie,chrom driverServer",即如何在Python环境下使用Selenium WebDriver来驱动IE和Chrome浏览器。 首先,我们来看`IEDriverServer.exe`,这是Selenium用于与IE浏览器交互的驱动...

    浏览器(Chrom+Firefox)

    Firefox 也采用开源技术,其内核是Gecko,对Web标准有良好的遵循。Firefox强调隐私保护,提供了一种名为“跟踪防护”的功能,可以阻止网站的追踪器,保护用户的在线隐私。Firefox 的扩展市场同样丰富,能满足用户...

    support-protocol-v8-chrome-15-firefox-6

    标题“support-protocol-v8-chrome-15-firefox-6”揭示了这是一个与Web开发相关的资源,特别是针对HTML5的Server-Sent Events (SSE)或WebSocket协议的实现,适用于Chrome 15和Firefox 6这两个浏览器版本。...

    树使用css选择器优化代码(IE7+,firefox3,opera9,chrom下可用)

    本篇文章将探讨如何使用CSS选择器来优化代码,使之适用于IE7+、Firefox 3、Opera 9以及Chrome等主流浏览器。 首先,理解CSS选择器的性能差异是优化的关键。CSS选择器分为多个级别,从基础的ID选择器(#id)、类选择器...

    自定义滚动条插件

    4. **兼容性好**:插件兼容多种浏览器,包括IE8+、Firefox、Chrome、Safari、Opera等,确保了在各种环境下都能正常工作。 5. **多样化的示例**:mCustomScrollbar提供了大量实例,涵盖了各种应用场景,无论是基础的...

    chrom+chromedriver.zip

    【标题】"chrom+chromedriver.zip" 暗示了这是一个包含Chrome浏览器和ChromeDriver的压缩文件。ChromeDriver是Google Chrome浏览器的一个自动化工具,主要用于Web应用程序的自动化测试,特别是Selenium WebDriver...

    js日历控件chrom ie ff

    支持chrom ie ff 的js日历控件。版权KimSoft (jinqinghua@gmail.com)。在此基础上做如下修改: a) 为时间input控件加入onchange事件触发代码; b) 年选择的宽度从64px增加到66px; c)如果input值不为空,那么再次...

    chrom插件.rar

    在本案例中,你拥有一个名为"chrom插件.rar"的压缩包,里面包含了自用的Chrome插件安装文件。 首先,要安装这个自定义的Chrome插件,你需要进行以下步骤: 1. **解压文件**:使用解压缩工具(如WinRAR或7-Zip)...

    chrom浏览器离线安装包

    ChromeStandalone_54.0.2840.59_Setup,chrom的离线安装包,官方原版

    支持flash版本chrom.zip

    标题"支持flash版本chrom.zip"指的是一个压缩包,其中可能包含了一个特别版本的 Google Chrome 浏览器,这个版本是为了解决用户在没有内置 Flash 支持的 Chrome 上运行 Flash 内容的需求。这可能是因为某些旧网站...

    chrom - react调试插件.html

    chrom - react调试插件

    Chrom浏览器Vue调试插件最新版本VueDevTools-5.3.3

    VueDevTools-5.3.3,Chrom浏览器Vue调试插件目前最新版本,可再开发这工具中进行vue的前端代码调试工作 Chrome and Firefox DevTools extension for debugging Vue.js applications.

    chrom 25开发版 centos 6 rpm 64位安装包

    chrom 25开发版 centos 6 rpm安装包很难找的自带flashplayer

    chrom扩展及应用开发 mobi

    Chrome插件开发必备好书,分享给大家,开源的,可以网上下载到

    postman chrom插件 windows64位 windows32位

    标题中的“Chrom插件”指的是Postman最初是作为Chrome浏览器的一个扩展而存在的。用户可以在Chrome应用商店下载并安装这个插件,然后在浏览器中直接使用Postman来与服务器进行交互。然而,随着Postman的发展,它已经...

    chrom-json-WebContent.rar

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于API接口的数据传输,因为它的结构清晰、易于读写、对人类友好且容易解析。Chrome浏览器是开发者常用的工具,为了更方便地查看和理解JSON...

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本119.0.6045.105)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom119.0.6045.105 chrome-linux64.zip chrome-mac-arm64.zip ...若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

Global site tag (gtag.js) - Google Analytics