左右飘窗代码研读

var browser={
    ie6:function(){
        return((window.XMLHttpRequest==undefined)&&(ActiveXObject!=undefined))
    },
    getWindow:function(){
        var myHeight=0;
        var myWidth=0;
        if(typeof(window.innerWidth)==‘number‘){
            myHeight=window.innerHeight;
            myWidth=window.innerWidth
        }else if(document.documentElement){
            myHeight=document.documentElement.clientHeight;
            myWidth=document.documentElement.clientWidth
        }else if(document.body){
            myHeight=document.body.clientHeight;
            myWidth=document.body.clientWidth
        }
        return{‘height‘:myHeight,‘width‘:myWidth}
    },
    getScroll:function(){
        var myHeight=0;
        var myWidth=0;
        if(typeof(window.pageYOffset)==‘number‘){
            myHeight=window.pageYOffset;
            myWidth=window.pageXOffset
        }else if(document.documentElement){
            myHeight=document.documentElement.scrollTop;
            myWidth=document.documentElement.scrollLeft
        }else if(document.body){
            myHeight=document.body.scrollTop;
            myWidth=document.body.scrollLeft
        }
        return{‘height‘:myHeight,‘width‘:myWidth}
    },
    getDocWidth:function(D){
        if(!D)
            var D=document;
        return Math.max(Math.max(D.body.scrollWidth,D.documentElement.scrollWidth),Math.max(D.body.offsetWidth,D.documentElement.offsetWidth),Math.max(D.body.clientWidth,D.documentElement.clientWidth))
    },
    getDocHeight:function(D){
        if(!D)
            var D=document;
        return Math.max(Math.max(D.body.scrollHeight,D.documentElement.scrollHeight),Math.max(D.body.offsetHeight,D.documentElement.offsetHeight),Math.max(D.body.clientHeight,D.documentElement.clientHeight))
    }
};
browser对象内:  ie6:ActiveXObject是ie浏览器的标志,window.XMLHttpRequest是IE7以前的创建XMLHttpRequest对象的方式,双重判定ie6.  getWindow: 获取浏览器宽高,window.innerWidth是netscape属性,部分浏览器可以通过此获取到浏览器宽高,document.documentElement是文档的根节点也是火狐等可以获取宽高的途径,document.body是文档的body子节点也是谷歌浏览器等可以获取宽高的途径,三种判定达到主流兼容。  getScroll: 获取浏览器被卷去的宽高,window.pageYOffset是netscape属性,老浏览器可以通过此获取到卷曲的宽高,document.documentElement是文档的根节点也是火狐等可以获取宽高的途径,document.body是文档的body子节点也是谷歌浏览器等可以获取宽高的途径,三种判定达到主流兼容。  getDocWidth: 获取文档宽,通过判定scrollWidth,offsetWidth,clientWidth在documentElement与body两种节点下的最宽最高高度来决定。  getDocHeight: 获取文档高,通过判定scrollWidth,offsetWidth,clientWidth在documentElement与body两种节点下的最宽最高高度来决定。
var dom={
    ID:function(id){
        var type=typeof(id);
        if(type==‘object‘)
            return id;
        if(type==‘string‘)
            return document.getElementById(id);
        return null
    },
    insertHtml:function(html){
        var frag=document.createDocumentFragment();
        var div=document.createElement("div");
        div.innerHTML=html;
        for(var i=0,ii=div.childNodes.length;i<ii;i++){
            frag.appendChild(div.childNodes[i])
        }
        document.body.insertBefore(frag,document.body.firstChild)
    }
};

dom对象内:

  id:获取对象的id名

  insertHtml: 插入html的动作,输入html代码,在body后append要加入的内容

var myEvent={
    add:function(element,type,handler){
        var ele=dom.ID(element);
        if(!ele)
            return;
        if(ele.addEventListener)
            ele.addEventListener(type,handler,false);
        else if(ele.attachEvent)
            ele.attachEvent("on"+type,handler);
        else ele["on"+type]=handler
    },
    remove:function(element,type,handler){
        var ele=dom.ID(element);
        if(!ele)
            return;
        if(ele.removeEventListener)
            ele.removeEventListener(type,handler,false);
        else if(ele.detachEvent)
            ele.detachEvent("on"+type,handler);
        else ele["on"+type]=null
    }
};

myEvent对象:

  add:绑定监听事件,addEventListener和attachEvent,前者是W3C的js绑定事件标准,后者是IE浏览器的js绑定事件标准,如果两者都不符合,老浏览器类型的话,用传统绑定方式。

  remove:解绑监听事件,removeEventListener和detachEvent,前者是W3C的js解绑事件标准,后者是IE浏览器的js解绑事件标准,如果两者都不符合,老浏览器类型的话,用传统绑定方式。

var position={
    rightCenter:function(id){
        var id=dom.ID(id);
        var ie6=browser.ie6();
        var win=browser.getWindow();
        var ele={
            ‘height‘:id.clientHeight,
            ‘width‘:id.clientWidth
        };
        if(ie6){
            var scrollBar=browser.getScroll()
        }else{
            var scrollBar={
                ‘height‘:0,
                ‘width‘:0
            };
            id.style.position=‘fixed‘
        }
        ele.top=parseInt((win.height-ele.height)/2+scrollBar.height);
        id.style.top=ele.top+‘px‘;
        id.style.right=‘3px‘
    },
    floatRightCenter:function(id){
        position.rightCenter(id);
        var fun=function(){
            position.rightCenter(id)
        };
        if(browser.ie6()){
            myEvent.add(window,‘scroll‘,fun);
            myEvent.add(window,‘resize‘,fun)
        }else{
            myEvent.add(window,‘resize‘,fun)
        }
    },
    leftCenter:function(id){
        var id=dom.ID(id);
        var ie6=browser.ie6();
        var win=browser.getWindow();
        var ele={
            ‘height‘:id.clientHeight,
            ‘width‘:id.clientWidth
        };
        if(ie6){
            var scrollBar=browser.getScroll()
        }else{
            var scrollBar={
                ‘height‘:0,
                ‘width‘:0
            };
            id.style.position=‘fixed‘
        }
        ele.top=parseInt((win.height-ele.height)/2+scrollBar.height);
        id.style.top=ele.top+‘px‘;
        id.style.left=‘3px‘
    },
    floatLeftCenter:function(id){
        position.leftCenter(id);
        var fun=function(){
            position.leftCenter(id)
        };
        if(browser.ie6()){
            myEvent.add(window,‘scroll‘,fun);
            myEvent.add(window,‘resize‘,fun)
        }else{
            myEvent.add(window,‘resize‘,fun)
        }
    }
};
position对象:  rightCenter: 右侧飘窗,绑定右侧飘窗的参数,目前写法是飘窗位于浏览器的居中处  floatRightCenter: 窗口滚动或者放缩后触发rightCenter  leftCenter: 左侧飘窗,绑定左侧飘窗的参数,目前写法是飘窗位于浏览器的居中处  floatLeftCenter: 窗口滚动或者放缩后触发leftCenter
function ad_left(){
    var html;
    html = ‘<div id="ad_left" style="position:absolute;width:130px;height:300px;z-index:10001"><a style="position:absolute;top:-15px;left:0;" href="javascript:void(0);" onclick="document.getElementById(\‘ad_left\‘).style.display=\‘none\‘">关闭</a><a href="http://www.xwcms.net"><img src="images/ad.jpg" width="130" height="300" /></a></div>‘;
    dom.insertHtml(html);
    position.floatLeftCenter(‘ad_left‘);
}
function ad_right(){
    var html;
    html = ‘<div id="ad_right" style="position:absolute;width:130px;height:300px;z-index:10001"><a style="position:absolute;top:-15px;right:0;" href="javascript:void(0);" onclick="document.getElementById(\‘ad_right\‘).style.display=\‘none\‘">关闭</a><a href="http://www.xwcms.net"><img src="images/ad.jpg" width="130" height="300" /></a></div>‘;
    dom.insertHtml(html);
    position.floatRightCenter(‘ad_right‘);
}
myEvent.add(window,‘load‘,ad_left);
myEvent.add(window,‘load‘,ad_right);

ad_left: 左侧广告所有内容参数及操作。

ad_right: 右侧广告所有内容参数及操作。

最后是调用ad_left与ad_right方法。

 
 
 


  

左右飘窗代码研读

时间: 2024-10-08 13:55:23

左右飘窗代码研读的相关文章

飘窗代码

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>飘窗代码</title> </head> <body> <div id="FlAD" style="position:absol

飘窗代码,自己补充了一下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta content="text/html; charset=UTF-8

网页前台页面图片飘窗代码

<!---飘窗开始---> <div id="img1" style="z-index: 999; border: 1px solid rgb(204, 204, 204); width: 340px; background-color: white; height: 100px; position: absolute; top: 29px; left: 1230px; font-size: 13px;" > <div style=&q

飘窗代码修改了一段js

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

我的代码重构经验

说明 本文在<MDU某产品OMCI模块代码质量现状分析>一文的基础上,分享作者对该模块进行重构时的实践经验. 具体的重构手段可参考<代码大全2>或<重构:改善既有代码的设计>,本文不再班门弄斧,而侧重重构时一些粗浅的“方法论”,旨在提高重构效率. 作者未采用重量级的重构工具,仅用到Source Insight的”Smart Rename”功能.也未使用CUnit等单元测试工具,而是通过在线调测和自动化测试保证代码的正确性. 一 背景 MDU系列产品从他处接手,OMCI模

内核源码研读预备知识

穿插在代码研读中的细节数据类型:    类型定义:        内核使用typedef来定义各种数据类型,以避免依赖于体系结构相关的特性,比如,各处理器上标准数据类型的位长可能不相同.定义的类型名称如sector_t.pid_t等,这些都是由内核在特定于体系结构的代码中定义的,以确保相关类型的值落在适当的范围内,因此一般无需了解这些类型的具体定义.但如果某个变量类型是typedef而来的,就不能直接访问,而是通过辅助函数.        某些时候必须使用精确定义了位数的变量,例如使用USB时,

js飘窗

本次记录一下js实现飘窗代码遇到的问题,主要是将飘窗始终保持在可视区域内,实现ie低版本的兼容. 首先是实现飘窗问题,代码网上一查一大堆很容易实现飘窗,如我在网上找的一个例子: var x = 50,y = 60var xin = true, yin = truevar step = 1var delay = 10var obj=document.getElementById("specialdiv")var userAgent=navigator.userAgent;function

基于plusgantt的项目管理系统实战开发

<基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构.自定义工作流)> 课程讲师:Adam 课程分类:Java 适合人群:中级 课时数量:37课时 用到技术:Spring 3+JDBC+RMI的架构.jquery.工作流 涉及项目:项目管理系统 咨询QQ:1337192913(小公子) 本课程是某航空研究所的真正项目的缩影.在课程中,将实际项目的业务进行了缩减,但是主要的技术点全部都讲解到了. 课程内容虽然不多,但是麻雀虽小五脏俱全,通过学习本课程,可以掌握到

梨园上菜鸟二

现在使用的是Git + Gerrit的代码管理工具.新的项目组里面,代码都是open.一有时间,只要你想,可以查看组内人员提交的代码.新的老大对代码的审查很是到位,对于类之间是提炼方法还是继承.完全是扣得很紧.从中可以学到很多.不过对于底层的代码研读上来说,刚毕业的人读起来确实基本上只能增加挫败感.最好还是带着业务需求,从需求结合,才能有的放矢. 现在,每天上着班.干着自己理想中的活.应该多谢满足,好好的搞定bug.bug虐我千百遍,我待她如初恋. 后面的目标,跟紧项目进度,深入了解代码的整体风