非常不错的一个javascript 类


Posted in Javascript onNovember 07, 2006

非常不错的一个javascript 类

/*   
 *  Author:aoao 
 *    Homepage:http://www.loaoao.com 
 *  Email:loaoao@gmail.com / QQ:2222342 
 *  Copyright (c) 2006 aoao 
 *  Licensed under a Creative Commons Attribution 2.5 License (http://creativecommons.org/licenses/by/2.5/)  
 */ var jscc = new Object(); 
var loaoao = new Object();//^_^// 
jscc = {     
    init:function(){/*_*/}, 
    path:"/scripts/jscc/", 
    include:function (file){ 
        var j=document.createElement("script"); 
        j.setAttribute('type','text/javascript'); 
        j.setAttribute('src',jscc.path+file+'.js'); 
        document.getElementsByTagName("head")[0].appendChild(j); 
    } 
}; 
jscc.addEvent = function( obj, type, fn ) { 
    if ( obj.attachEvent ) {         
      obj['e'+type+fn] = fn; 
      obj[type+fn] = function(){obj['e'+type+fn]( window.event );} 
      obj.attachEvent( 'on'+type, obj[type+fn] ); 
    } else { 
      obj.addEventListener( type, fn, false ); 
    } 
}; 
// Cookies 
jscc.cookie = { 
    create:function (name,value,days) { 
      if (days) { 
        var date = new Date(); 
        date.setTime(date.getTime()+(days*24*60*60*1000)); 
        var expires = "; expires="+date.toGMTString(); 
      } 
      else expires = ""; 
      document.cookie = name+"="+value+expires+"; path=/"; 
    }, 
    read:function(name) { 
      var nameEQ = name + "="; 
      var ca = document.cookie.split(';'); 
      for(var i=0;i < ca.length;i++) { 
        var c = ca[i]; 
        while (c.charAt(0)==' ') c = c.substring(1,c.length); 
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
      } 
      return null; 
    } 
}; 

jscc.getPageSize=function(){ 
    // reference lightbox (http://www.huddletogether.com/projects/lightbox/lightbox.js) 
     var theWidth,theHeight; 
    if (window.innerHeight&&window.scrollMaxY) { 
        theWidth = window.innerWidth; 
        theHeight = window.innerHeight+ window.scrollMaxY; 
     }  
    else if (document.body){ 
        theWidth=((document.body.scrollWidth > document.body.offsetWidth)?document.body.scrollWidth : document.body.offsetWidth ); 
        theHeight=((document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight  : document.body.offsetHeight ); 
    } 
    var winWidth ,winHeight;  
    if (self.innerHeight) {     
        winWidth = self.innerWidth; 
        winHeight = self.innerHeight; 
    } else if (document.documentElement && document.documentElement.clientHeight) { 
        winWidth = document.documentElement.clientWidth; 
        winHeight = document.documentElement.clientHeight; 
    } else if (document.body) { 
        winWidth = document.body.clientWidth; 
        winHeight = document.body.clientHeight; 
    } 
    var pWidth=(theWidth>winWidth?theWidth:winWidth) 
    var pHeight=(theHeight>winHeight?theHeight:winHeight) 
    var yScroll; 
    if (self.pageYOffset) { 
        yScroll = self.pageYOffset; 
    } else if (document.documentElement && document.documentElement.scrollTop){     // Explorer 6 Strict 
        yScroll = document.documentElement.scrollTop; 
    } else if (document.body) {// all other Explorers 
        yScroll = document.body.scrollTop; 
    } 
    var getPageSize = new Array(pWidth,pHeight,winWidth,winHeight,yScroll)  
    return getPageSize; 
} 

jscc.widgets = {/**/}; 
jscc.widgets.fixedsidebar = { 
    fixedHeight:0, 
    oldScrolltop:0, 
    init: function(){ 
        if (!document.getElementById("sidebar")) return; 
        jscc.addEvent(window,"scroll",function(e){jscc.widgets.fixedsidebar.setFixed()}); 
        jscc.addEvent(window,"resize",function(e){jscc.widgets.fixedsidebar.setFixed()}); 
        this.fixedHeight=document.getElementById("sidebar").offsetTop; 
        this.setFixed(); 
    }, 
    setFixed:function(){ 
        var sidebar=document.getElementById("sidebar"); 
        var ref=document.getElementById("main"); 
        var s_t=sidebar.offsetTop; 
        var s_h=sidebar.offsetHeight; 
        var s_th=s_t+s_h; 
        var r_th=ref.offsetTop+ref.offsetHeight; 
        var d_st; 
        if(document.documentElement.scrollTop){ 
            d_st=document.documentElement.scrollTop; 
        } 
        else{ 
            d_st=document.body.scrollTop 
            } 
        if(r_th>(s_t+s_h)){ 
            var seHeight=0;  
            if (self.innerHeight) {    seHeight = self.innerHeight;} else if (document.documentElement && document.documentElement.clientHeight) {    seHeight = document.documentElement.clientHeight;} else if (document.body) {seHeight = document.body.clientHeight;} 
            try{ 
                if(seHeight>s_h){ 
                    var newtop=(d_st<this.fixedHeight?0:d_st-this.fixedHeight-42); 
                } 
                else{ 
                // Thank you dron (http://www.ucren.com/) 
                switch (d_st-this.oldScrolltop>0) 
                    { 
                    case true: 
                        if (d_st-this.fixedHeight > s_t -seHeight){ 
                        var    newtop= d_st -this.fixedHeight - (s_h-seHeight)-68; 
                        } 
                    break; 
                    case false: 
                        if (d_st-this.fixedHeight<parseInt(sidebar.style.marginTop,10)){ 
                        var newtop= d_st-this.fixedHeight; 
                        } 
                    break; 
                    } 
                } 
                this.oldScrolltop = d_st; 
                if(newtop==undefined){ return;}; 
                newtop=(newtop<0?0:newtop); 
                sidebar.style.marginTop= newtop+"px"; 
            } 
            catch(e){ 
              //alert(e.description); 
            } 
        } 
        else{ 
            sidebar.style.marginTop="0px"; 
        } 
    }     
}; 
//jscc.addEvent(window,"load",function(e){jscc.widgets.fixedsidebar.init()}); 
jscc.widgets.wraphandler = { 
    //jscc.widgets.wraphandler reference http://www.collylogic.com/includes/resizer.js (http://www.collylogic.com/?/comments/redesign-notes-1-width-based-layout/) 
    init: function() {     
        //if (!document.getElementById) return; 
            if( document.getElementById('wrapper').className=="col3"){     
            jscc.wraphandler.setWrapper(); 
            jscc.addEvent(window,"resize",jscc.wraphandler.setWrapper); 
            } 
            else{return} 
      }, 
      setWrapper: function() { 
       var getPS=jscc.getPageSize(); 
       var _width=getPS[2]; 
          if (_width < 940) { 
            document.getElementById('wrapper').className = 'col2'; 
          } else { 
            document.getElementById('wrapper').className = 'col3'; 
          } 
          if(document.all) { 
            if (_width < 780) { 
            document.getElementById('wrapper').style.width="750px" 
              } else { 
                document.getElementById('wrapper').style.width="auto" 
              }               
          } 
      } 
}; 
//jscc.addEvent(window,"load",function(e){jscc.widgets.wraphandler.init()}); 

jscc.widgets.styleSwitcher = { 
    // jscc.widgets.styleSwitcher  reference StyleSwitcher functions( written by Paul Sowden http://www.idontsmoke.co.uk/ss/ . For the details, visit ALA: http://www.alistapart.com/stories/alternate/) 
    init:function(e) { 
        var cookie = jscc.cookie.read("style"); 
        var title = cookie ? cookie : this.getPreferred(); 
        title = (title==null?"left":title); 
        this.setActive(title); 
        var operactioner = document.getElementById("themes").getElementsByTagName("A"); 
    operactioner[0].onclick=function() { 
        jscc.widgets.styleSwitcher.setActive("left"); 
        return false; 
    }; 
    operactioner[1].onclick=function() { 
        jscc.widgets.styleSwitcher.setActive("right"); 
        return false; 
    }; 
    this.switcher(title); 
    }, 
    setActive:function(title){ 
        var i, a, main; 
          for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { 
        if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { 
                a.disabled = true; 
                if(a.getAttribute("title") == title) a.disabled = false; 
            } 
        } 
        this.switcher(title); 
        //jscc.cookie.create("style", title,"365");     
    }, 
    getActive:function(){ 
    var i, a; 
    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { 
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");} 
      return null; 
    }, 
    getPreferred:function (){ 
      var i, a; 
      for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { 
        if(a.getAttribute("rel").indexOf("style") != -1 
           && a.getAttribute("rel").indexOf("alt") == -1 
           && a.getAttribute("title") 
           ) return a.getAttribute("title"); 
      } 
      return null; 
    }, 
    switcher:function(theme){ 
        if(!document.getElementById(["theme_"+theme])) { return;} 
        var notheme=(theme=="left"?"right":"left"); 
        document.getElementById(["theme_"+notheme]).style.display="inline"; 
        document.getElementById(["theme_"+theme]).style.display="none"; 
    }, 
    end:function(e){ 
      var title = this.getActive(); 
      jscc.cookie.create("style", title,"365"); 
    } 
}; 
//jscc.addEvent(window,"load",function(e){jscc.widgets.styleSwitcher.init()}); 
jscc.addEvent(window,"unload",function(e){jscc.widgets.styleSwitcher.end()}); 
jscc.widgets.toTop = { 
    init:function(){ 
        document.getElementById("toTop").onclick=function(e){ 
            jscc.widgets.toTop.set(); 
            return false; 
        }         
    }, 
    waitTimer:null, 
    set:function(){ 
        var d_st=document.documentElement.scrollTop; 
        if(window.navigator.userAgent.indexOf("MSIE")>=1){ 
            for (var i=d_st; i>10; i-=Math.floor(i/6)){ 
            window.scrollTo(0,i); 
            } 
            window.scrollTo(0,10); 
        } 
        else{ 
        window.scrollTo(0,Math.floor(d_st / 2)); 
         if(d_st>10){ 
                 waitTimer=setTimeout("jscc.widgets.toTop.set()",20); 
          } 
            else{ 
                  clearTimeout(waitTimer); 
            } 
        } 
    } 
} 
jscc.api={ 
    google:{ 
        init:function(){ 
        try{ 
            var searchControl = new GSearchControl(); 
        } 
            catch(e){ 
             return; 
            } 
        var options = new GdrawOptions(); 
        options.setSearchFormRoot(document.getElementById("googleSearchForm")); 
        options.setDrawMode(GSearchControl.DRAW_MODE_TABBED); 
         searchControl.setLinkTarget(GSearch.LINK_TARGET_SELF); 
        searchControl.setResultSetSize(GSearch.LARGE_RESULTSET); 
        var siteSearch = new GwebSearch(); 
        siteSearch.setUserDefinedLabel("站内搜索"); 
        siteSearch.setUserDefinedClassSuffix("siteSearch"); 
        siteSearch.setSiteRestriction("www.loaoao.com"); 
        searchControl.addSearcher(siteSearch); 
        var labSearch = new GwebSearch(); 
        labSearch.setUserDefinedLabel("嗷嗷的实验室搜索"); 
        labSearch.setUserDefinedClassSuffix("labSearch"); 
        labSearch.setSiteRestriction("lab.loaoao.com"); 
        searchControl.addSearcher(labSearch); 
        var wwwSearch = new GwebSearch(); 
        wwwSearch.setUserDefinedLabel("Google搜索"); 
        labSearch.setUserDefinedClassSuffix("wwwSearch"); 
        searchControl.addSearcher(wwwSearch); 
        searchControl.draw(document.getElementById("googleSearchResults"), options); 
        //    searchControl.execute("css"); 
        } 
    } 
} 
loaoao.com = function(){ 
    if (!document.getElementById) return; 
    jscc.widgets.styleSwitcher.init(); 
    jscc.widgets.fixedsidebar.init(); 
    jscc.widgets.toTop.init();     
    jscc.api.google.init();     

}; 
jscc.addEvent(window,"load",loaoao.com);
Javascript 相关文章推荐
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
Dec 11 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
Jan 15 Javascript
js传参数受特殊字符影响错误的解决方法
Oct 21 Javascript
30个经典的jQuery代码开发技巧
Dec 15 Javascript
JavaScript的面向对象编程基础
Aug 13 Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 Javascript
jQuery弹出div层过2秒自动消失
Nov 29 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
Sep 10 Javascript
Vue.js 中的 v-cloak 指令及使用详解
Nov 19 Javascript
vue.js高德地图实现热点图代码实例
Apr 18 Javascript
Vue js with语句原理及用法解析
Sep 03 Javascript
在vue中通过render函数给子组件设置ref操作
Nov 17 Vue.js
不错的一个日期输入 动态
Nov 06 #Javascript
由prototype_1.3.1进入javascript殿堂-类的初探
Nov 06 #Javascript
javascript读取xml
Nov 04 #Javascript
用javascript操作xml
Nov 04 #Javascript
一个加密JavaScript的开源工具PACKER2.0.2
Nov 04 #Javascript
破除一些网站复制、右键限制
Nov 04 #Javascript
js计数器代码
Nov 04 #Javascript
You might like
PHP实现数组递归转义的方法
2014/08/28 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
详解python3中tkinter知识点
2018/06/21 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
实验教师岗位职责
2014/02/13 职场文书
男女朋友协议书
2014/04/23 职场文书
路政管理求职信
2014/06/18 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
毕业班工作总结
2015/08/10 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
python创建字典及相关管理操作
2022/04/13 Python