非常不错的一个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 相关文章推荐
IE与firefox之jquery用法区别
Oct 03 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
Oct 23 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
8个实用的jQuery技巧
Mar 04 Javascript
js实现禁止中文输入的方法
Jan 14 Javascript
详解AngularJS中的作用域
Jun 17 Javascript
使用jquery动态加载Js文件和Css文件
Oct 24 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
AngularJS中如何使用echart插件示例详解
Oct 26 Javascript
详解Immutable及 React 中实践
Mar 01 Javascript
vue下的@change事件的实现
Oct 25 Javascript
解决pycharm双击但是无法打开的情况
Oct 31 Javascript
不错的一个日期输入 动态
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
我的论坛源代码(十)
2006/10/09 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
PHP开发注意事项总结
2015/02/04 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
使用python进行拆分大文件的方法
2018/12/10 Python
Python如何用filter函数筛选数据
2020/03/05 Python
Django分组聚合查询实例分享
2020/04/29 Python
python的链表基础知识点
2020/09/13 Python
Html5实现二维码扫描并解析
2016/01/20 HTML / CSS
高级护理实习生自荐信
2013/09/28 职场文书
退休感言
2014/01/28 职场文书
校园元旦活动总结
2014/07/09 职场文书
绿色环保倡议书
2015/04/28 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
地道战观后感300字
2015/06/04 职场文书
保外就医申请书范文
2015/08/06 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书