点评:这篇文章主要介绍了html动态加载css样式和js脚本示例,需要的朋友可以参考下$ W0 c; Y: x" a8 ?* A
一、动态加载脚本! h0 b6 r3 j3 j4 k/ o
当网站需求变大,脚本的需求也逐步变大。我们就不得不引入太多的 js 脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本。
2 h% k$ r! M# K! f; M比如:我们想在需要检测浏览器的时候,再引入检测文件。. B% T! h+ ~# m* @! j
代码如下:
/ U+ I: m5 {1 ?1 L3 V<script type=text/javascript>% ^4 m% h/ N. m$ s
window.onload = function(){
, c" |/ h( v& n1 yalert(typeof browserdetect);
6 B# `" Y3 |, ^' H}- H4 J9 b1 M' m* [+ c# j
var flag = true; //设置 true 再加载
5 W6 Q' i* [% F- y9 qif (flag) {* ^+ {0 d8 w4 D) Y1 t/ X8 P
loadscript('browserdetect.js'); //设置加载的 js, B1 s3 A) ?& }: N0 @
}, }. ~; @9 l/ Z7 z3 V
function loadscript(url) {' Z9 d! Z: K- U
var script = document.createelement('script');; _. v, g3 O' {, {
script.type = 'text/javascript';
4 K, B$ o1 u0 a$ Iscript.src = url;. a# K, F1 ?! _9 c
//document.head.appendchild(script); //document.head 表示<head>
2 n2 P; J9 S8 U6 B( ^" Zdocument.getelementsbytagname('head')[0].appendchild(script);$ I: l% \/ l! j+ C
}
- ~, W Z x8 o</script>动态执行 js</p> <p>+ v, X5 T) _ o7 I8 \
<script type=text/javascript>4 P. O! U) Q. |
window.onload = function(){
9 Y' M0 b( y4 p$ l( G+ n}
+ v. Z- c* A( U0 ]& pvar flag = true; //设置 true 再加载
; |. S- w! v5 |1 N9 I# \if (flag) {
8 U, |1 A- K$ q( `! l2 q8 h* Bvar script = document.createelement('script');
# [- B, K* X" h. C4 v4 g$ c9 Mscript.type = 'text/javascript';8 v, y. p1 w+ b9 \
var text = document.createtextnode(alert('lee')); //ie6,7,8 浏览器报错 K0 g# E/ p. K" H5 q+ U
script.appendchild(text);/ V. T( a: g4 @7 `; ^+ a
document.getelementsbytagname('head')[0].appendchild(script);- e& n: ?5 C+ J" u, s# U
}: V. y0 I- x% W) W; P4 ~- [
</script>ie 6,7,8浏览器认为 script 是特殊元素,不能在访问子节点。为了兼容,可以使用 text属性来代替。</p> <p>0 d3 [/ u" U% a* t
<script type=text/javascript>
5 @: Z. c; k+ v. [! zwindow.onload = function(){2 i; @( N. i; B$ J
}( H% }1 z3 u. @" J9 N
var flag = true; //设置 true 再加载
$ H. S5 b7 d d5 g7 N* Q+ Aif (flag) {: d! |, D. U( V- e, |' X1 c
var script = document.createelement('script');
& S5 ?5 j" G: Y7 S0 I. hscript.type = 'text/javascript';
% `5 G" n# x% w2 V& H7 Fscript.text = alert('lee');
. L" O- J! l4 ^script.appendchild(text);
9 ~2 K* a0 G Q. C8 |document.getelementsbytagname('head')[0].appendchild(script);
' Z7 ]8 W K+ f8 D$ } V}( _& X' _8 N8 `$ T
</script>需要做所有浏览器兼容% M: z1 v6 v! R0 d) v0 {
二、动态加载样式
. n" I" y u* S& w为了动态的加载样式表,比如切换网站皮肤。样式表有两种方式进行加载,一种是<link>标签,一种是<style>标签。" ^0 l% W! o% p
动态执行 link+ g- k0 v& v! _9 Q8 Y
代码如下:
. t8 f( u2 f7 S0 O: F+ ?var flag = true;
; V h9 a& p& G1 N+ Q0 i0 U7 yif (flag) {, d2 N' u. C, Q0 g0 X4 Q8 D5 X! `/ f
loadstyles('basic.css');0 U0 S& x, S( W% v! E2 z
}
( B2 n9 \+ k7 ufunction loadstyles(url) {
7 Q0 |+ {3 \( l' S! d$ |+ ~2 @1 Mvar link = document.createelement('link');link.rel = 'stylesheet';. f; }5 `4 r7 s( b7 A! [ d
link.type = 'text/css';% z" e: @4 w B# k
link.href = url;
6 \7 G0 z+ V& Zdocument.getelementsbytagname('head')[0].appendchild(link);
* h; A" Q! m% L3 l}
; e+ D" r% q. U2 b
: u- o0 N2 M/ g/ m动态执行 style7 ?3 u% a( z6 x; r: W
代码如下:
% W& Z- T7 X8 p- z) v9 E<script type=text/javascript>
' B! d! M) l( d" }7 N4 K4 ?# ^) U. A# rvar flag = true;
/ s2 ?4 H: z; X# W) j$ Iif (flag) {
0 s( v/ H5 T8 c) a! x2 G* ?' L2 ovar style = document.createelement('style');* \9 I' X) t) j. I2 [
style.type = 'text/css';
" s! @% y# g$ Y# H; G. K//var box= document.createtextnode('#box{background:red}');// ie6,7,8 不支持 O5 a4 m% b, t9 Y, i
//style.appendchild(box);. |5 N. b5 y g" z. Z# p
document.getelementsbytagname('head')[0].appendchild(style);; d! r2 j6 Q2 K& h
insertrule(document.stylesheets[0], '#box', 'background:red', 0);
% y2 q- n% f# V& o7 l7 }} d, f V+ t! n
function insertrule(sheet, selectortext, csstext, position) {
3 H7 r. h5 Y* x: Q& o5 Y6 M- \//如果是非 ie6,7,8+ ^7 m% O/ M/ X. H% B7 F% t. z8 m0 }
if (sheet.insertrule) {% x% ]0 [" i% G2 }- z! S: ^7 @
sheet.insertrule(selectortext + { + csstext + }, position);7 f) {/ f7 @0 T8 k
//如果是 ie6,7,89 w% \* S8 O7 t5 {
} else if (sheet.addrule) {& {1 s# j& @+ r5 D3 c
sheet.addrule(selectortext, csstext, position);
0 w5 a% x+ G0 D9 `}% K% x6 A4 w' t, A
}" g: ^( ]) e( q: d2 S
</script>
3 b8 K: c# D. O; n5 w9 S, f' R$ l
$ N, T0 B2 C* o( Q6 A更多网页制作信息请查看: 网页制作 |