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 类
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@