点评:这篇文章主要介绍了html动态加载css样式和js脚本示例,需要的朋友可以参考下
, Q D+ g/ D' k8 z9 W' r一、动态加载脚本8 O& k5 l6 k/ ^0 D8 P
当网站需求变大,脚本的需求也逐步变大。我们就不得不引入太多的 js 脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本。
& H" ?& v& k T) |比如:我们想在需要检测浏览器的时候,再引入检测文件。
1 R/ b0 C r! F+ }7 p8 h$ Q代码如下:
7 B8 @ @2 f$ U+ }<script type=text/javascript> Y2 w$ z- H6 L
window.onload = function(){ p: U. a9 _# Q7 {
alert(typeof browserdetect);4 `5 K" I9 b& I3 @# t
}# i: I! W* a5 L$ Z
var flag = true; //设置 true 再加载
/ U1 n3 t- d% a" C9 X" Xif (flag) {
~$ z2 I$ ` a3 d' E3 W5 dloadscript('browserdetect.js'); //设置加载的 js. s4 g8 R' E5 W4 T0 r
}& @2 `6 H, F' F! y+ A# x$ Y9 A3 K
function loadscript(url) {
1 n4 l, F$ s; y& i4 Y/ Pvar script = document.createelement('script');
0 @) V/ Z4 z% _* Escript.type = 'text/javascript';
1 }& M7 M" g2 v$ q' j% ascript.src = url;
( ]' y5 Z# n7 V1 S( d# u1 q+ d6 \//document.head.appendchild(script); //document.head 表示<head>1 W( g8 \' F7 u
document.getelementsbytagname('head')[0].appendchild(script);
; ^; ^' {5 y; V0 Q7 p7 ~}" i( `8 g5 o! \* ~
</script>动态执行 js</p> <p>1 N8 ^7 [8 v. X- Y5 V3 U( g5 u
<script type=text/javascript>
# r7 Q5 p! v: I" S7 {& Ywindow.onload = function(){) W/ n/ S. G& p5 {, N4 U+ b1 w
}( B X. d2 O( I9 z w) U6 i! L& n9 x
var flag = true; //设置 true 再加载
- E! m: c1 z, pif (flag) {
9 R* r* B6 g- X) h1 |+ Dvar script = document.createelement('script');2 X) e: Z9 S. H. o* u" H; p
script.type = 'text/javascript';1 U, G! {( m) n& c# f9 C7 ~0 }
var text = document.createtextnode(alert('lee')); //ie6,7,8 浏览器报错
$ O: |3 B7 o0 P5 kscript.appendchild(text);
. ?& v9 x! I6 k! cdocument.getelementsbytagname('head')[0].appendchild(script);
. C/ q* K6 W* i( a4 n}: ^" t& E6 Q/ L% q& c; a* F
</script>ie 6,7,8浏览器认为 script 是特殊元素,不能在访问子节点。为了兼容,可以使用 text属性来代替。</p> <p>
1 `; L g" _0 j4 Y; ]<script type=text/javascript>
* _2 U1 N# H6 g% b& D! c0 ]/ kwindow.onload = function(){
8 R- j; W* e# C, F1 C( u( i1 d' p}
7 L& \+ j4 [. e7 c2 N5 x$ Evar flag = true; //设置 true 再加载+ T R' j; P9 o* {" o
if (flag) {
8 q. V/ ?; o: @var script = document.createelement('script');
8 j6 l+ g8 v% }& i: B& K1 Xscript.type = 'text/javascript';+ A4 `' ~8 g: Y7 n
script.text = alert('lee');
I( ?3 z' U" _1 g2 [5 `$ ~* jscript.appendchild(text);
/ F8 G% }/ H7 F, o9 Q4 _" Edocument.getelementsbytagname('head')[0].appendchild(script);0 c1 U: c& o, e; h
}
5 v$ M' ?5 B0 P: j5 [8 x</script>需要做所有浏览器兼容
/ z0 q6 n. g5 \6 i8 }* O4 L二、动态加载样式
! `$ d6 H o) L) ^1 b8 _5 z0 `为了动态的加载样式表,比如切换网站皮肤。样式表有两种方式进行加载,一种是<link>标签,一种是<style>标签。7 o A" \% A! O: O
动态执行 link
/ h- B* N- Q5 l$ b代码如下:; ~! P/ n* P* ~3 I: H% j9 g o
var flag = true;4 W, [' r, n) F3 ~4 Z) ?# F
if (flag) {5 B, T0 G. f4 L3 @
loadstyles('basic.css');, Q! D3 G4 N" x
}
e+ `1 |! ]7 K3 e/ b7 ^) w; Bfunction loadstyles(url) {
k0 X2 y; e6 V$ T! h- Dvar link = document.createelement('link');link.rel = 'stylesheet';
* k8 t# n/ i8 L* U- P; Q; Dlink.type = 'text/css';2 r; D- Q# e2 h$ e+ O& G
link.href = url;
1 _* S" j3 b4 xdocument.getelementsbytagname('head')[0].appendchild(link);
: t* C/ l' {* J. \* U}
1 y1 e5 G# ~- @4 t8 a6 a2 X$ d2 \+ `( M+ k- i3 ?: f
动态执行 style
% ~+ I1 {% c; W, _代码如下:5 s5 W2 [4 c7 O% I/ w. {
<script type=text/javascript>
, b: U! ]+ b6 \/ _4 j0 |, a) ivar flag = true;
* o3 i) x7 X Y# @6 Z7 Yif (flag) {% D. Q: P( B4 R! r3 E# r1 d
var style = document.createelement('style');
" C" d9 B* {0 G& u k$ Q$ c# Rstyle.type = 'text/css';
7 p1 f) e2 r8 W" Q; f//var box= document.createtextnode('#box{background:red}');// ie6,7,8 不支持
7 T$ m, o" [1 Y* ~//style.appendchild(box);. H* j) w* g$ a8 l& G
document.getelementsbytagname('head')[0].appendchild(style);( K0 H3 h5 i6 k( {
insertrule(document.stylesheets[0], '#box', 'background:red', 0);3 B; Q3 G" i0 M- x9 E7 L, P
}
6 z" T: j0 V" }function insertrule(sheet, selectortext, csstext, position) {( z( A2 [% _( ^" |* X5 O& K$ k @
//如果是非 ie6,7,8
' H' F7 l+ D2 ^. T5 Z. z# T7 ^if (sheet.insertrule) {' H' P' M K/ Q+ }, d% T* V- X
sheet.insertrule(selectortext + { + csstext + }, position);7 `9 `$ L7 s7 l
//如果是 ie6,7,8
& m0 o+ u* o6 V3 {} else if (sheet.addrule) { p3 T; ^$ H7 Z* _8 {
sheet.addrule(selectortext, csstext, position);) S% o1 r- i5 s- T2 I, x
}& } o) @, g) G9 [6 E
}4 S0 g. }: j& D6 K8 R! b5 W. y0 T
</script>
2 e$ }. M9 W8 ?$ Z
5 M; W% @: h6 t) P/ Y' y# s更多网页制作信息请查看: 网页制作 |