js 不同css样式切换,用js无刷新切换css样式

[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();

})();

694748ed64b9390909c0d88230893790.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值