用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - javascript代码库

用js无刷新切换css样式

2013-03-05 作者: 海大软件1102班举报

[javascript]代码库

/* 
 *  CSSrefresh v1.0.1
 
 *  Copyright (c) 2012 Fred Heusschen
 *  www.frebsite.nl
 *
 *  Dual licensed under the MIT and GPL licenses.
 *  http://en.wikipedia.org/wiki/MIT_License
 *  http://en.wikipedia.org/wiki/GNU_General_Public_License
 */
 
(function() {
 
    var phpjs = {
 
        array_filter: function( arr, func )
        {
            var retObj = {};
            for ( var k in arr )
            {
                if ( func( arr[ k ] ) )
                {
                    retObj[ k ] = arr[ k ];
                }
            }
            return retObj;
        },
        filemtime: function( file )
        {
            var headers = this.get_headers( file, 1 );
            return ( headers && headers[ 'Last-Modified' ] && Date.parse( headers[ 'Last-Modified' ] ) / 1000 ) || false;
        },
        get_headers: function( url, format )
        {
            var req = window.ActiveXObject ? new ActiveXObject( 'Microsoft.XMLHTTP' ) : new XMLHttpRequest();
            if ( !req )
            {
                throw new Error('XMLHttpRequest not supported.');
            }
 
            var tmp, headers, pair, i, j = 0;
 
            try
            {
                req.open( 'HEAD', url, false );
                req.send( null );
                if ( req.readyState < 3 )
                {
                    return false;
                }
                tmp = req.getAllResponseHeaders();
                tmp = tmp.split( '\n' );
                tmp = this.array_filter( tmp, function( value )
                {
                    return value.toString().substring( 1 ) !== '';
                });
                headers = format ? {} : [];
     
                for ( i in tmp )
                {
                    if ( format )
                    {
                        pair = tmp[ i ].toString().split( ':' );
                        headers[ pair.splice( 0, 1 ) ] = pair.join( ':' ).substring( 1 );
                    }
                    else
                    {
                        headers[ j++ ] = tmp[ i ];
                    }
                }
     
                return headers;
            }
            catch ( err )
            {
                return false;
            }
        }
    };
 
    var cssRefresh = function() {
 
        this.reloadFile = function( links )
        {
            for ( var a = 0, l = links.length; a < l; a++ )
            {
                var link = links[ a ],
                    newTime = phpjs.filemtime( this.getRandom( link.href ) );
 
                //  has been checked before
                if ( link.last )
                {
                    //  has been changed
                    if ( link.last != newTime )
                    {
                        //  reload
                        link.elem.setAttribute( 'href', this.getRandom( link.href ) );
                    }
                }
 
                //  set last time checked
                link.last = newTime;
            }
            setTimeout( function()
            {
                this.reloadFile( links );
            }, 1000 );
        };
 
        this.getHref = function( f )
        {
            return f.getAttribute( 'href' ).split( '?' )[ 0 ];
        };
        this.getRandom = function( f )
        {
            return f + '?x=' + Math.random();
        };
 
 
        var files = document.getElementsByTagName( 'link' ),
            links = [];
 
        for ( var a = 0, l = files.length; a < l; a++ )
        {          
            var elem = files[ a ],
                rel = elem.rel;
            if ( typeof rel != 'string' || rel.length == 0 || rel == 'stylesheet' )
            {
                links.push({
                    'elem' : elem,
                    'href' : this.getHref( elem ),
                    'last' : false
                });
            }
        }
        this.reloadFile( links );
    };
 
 
    cssRefresh();
 
})();


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...