点评:这篇文章主要介绍了html动态加载css样式和js脚本示例,需要的朋友可以参考下9 X3 n! Y, Z$ G0 p Y: X" G
一、动态加载脚本
4 P8 @+ ~7 N/ S6 z9 i. U7 Z, M当网站需求变大,脚本的需求也逐步变大。我们就不得不引入太多的 js 脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本。
, `9 R. |. p0 m& q# j( j1 D$ s# a比如:我们想在需要检测浏览器的时候,再引入检测文件。 W4 R7 `! K- Q ?3 p
代码如下:9 K X/ a7 R; h/ ~( \- I
<script type=text/javascript>8 l$ f$ `7 t+ U! C
window.onload = function(){
9 K7 ?; n0 ^8 Palert(typeof browserdetect);2 Q+ V) ]* C) Y( t8 B7 |" n/ D2 A
}. _) k' Y5 u% i, ~" J
var flag = true; //设置 true 再加载$ @* W" C' F# H9 X( D x% J
if (flag) {' O- G" h; V# H1 |
loadscript('browserdetect.js'); //设置加载的 js, M% I: y6 i' w7 d3 O& y
}
; q# F, A) m1 e5 |2 efunction loadscript(url) {& `3 V. Z! ]5 C
var script = document.createelement('script');5 B/ \) ?5 |9 n4 [
script.type = 'text/javascript';
& Z3 Q$ s% [- D: Vscript.src = url;
+ M3 k: F8 P' z, g# U) `' ^//document.head.appendchild(script); //document.head 表示<head>" ]6 H. x* N. u, m( c5 w% P- D
document.getelementsbytagname('head')[0].appendchild(script);
' Q3 G8 Y8 X: Q8 J% \}! Z2 n4 m* b1 j9 C
</script>动态执行 js</p> <p>
7 u O1 Q8 I) x1 |& |3 o: o<script type=text/javascript>1 B0 |" R8 F* u/ @
window.onload = function(){
0 k( \& g& M( k}: @5 Y, |+ @4 c+ `
var flag = true; //设置 true 再加载
+ Z0 a& r1 N# w* Z# l' pif (flag) {
/ c _3 q) u! l1 y: @- evar script = document.createelement('script');
3 p6 D, h7 ]+ i% S, |5 ` |script.type = 'text/javascript';6 c! a3 A: U! k1 y+ ?5 n0 j
var text = document.createtextnode(alert('lee')); //ie6,7,8 浏览器报错+ b) @2 u% Q5 p* a5 U: m+ Q
script.appendchild(text);- k% b. x1 j$ C' q( G
document.getelementsbytagname('head')[0].appendchild(script);- z6 m% w- l) [) _
}
. j2 K+ B+ l. o+ h</script>ie 6,7,8浏览器认为 script 是特殊元素,不能在访问子节点。为了兼容,可以使用 text属性来代替。</p> <p>
( h% e6 C) f4 ~, j<script type=text/javascript>
: w2 i# q' G( U6 }. nwindow.onload = function(){' ~4 @0 a- A y: M" \& i
}
L$ l7 [3 {: W3 i7 v$ ivar flag = true; //设置 true 再加载
! o1 U) ^9 e# n5 \+ @9 c4 S vif (flag) {/ N; Y, M2 `6 S# P+ d0 X- N/ y
var script = document.createelement('script');0 r8 P8 Y4 z% o$ E7 ~: L# ]2 T& y
script.type = 'text/javascript';3 P% s k0 H- f, M: a! D; G8 u/ t
script.text = alert('lee'); m% U5 f5 M% U% p, d) r
script.appendchild(text);: b: U* a+ Y" r- E" `! t% q2 N- s) v
document.getelementsbytagname('head')[0].appendchild(script);
& i. _5 L/ x. l4 U0 G0 @}
- w/ [6 E! \3 b% L+ l</script>需要做所有浏览器兼容
8 P# b0 X% M- J# [二、动态加载样式7 Y$ u" t$ V7 v. k- u* ?
为了动态的加载样式表,比如切换网站皮肤。样式表有两种方式进行加载,一种是<link>标签,一种是<style>标签。4 e4 x& |$ y# E. ^
动态执行 link G7 x5 S0 M, t W! j
代码如下:5 ~' ]1 D# L. w
var flag = true;
" p9 ]2 A' J4 h6 c' nif (flag) {6 J1 f8 E* `* z# z% k! S" R* o
loadstyles('basic.css');. k9 V8 c5 C# Y' M
}2 l; R, Q+ @4 W: s+ E6 p% M5 G6 z$ v1 H1 w
function loadstyles(url) {% M, Y, S0 y+ R6 `. ^9 a$ m
var link = document.createelement('link');link.rel = 'stylesheet';' z% C, R3 a4 S% c* j0 ^7 W' _
link.type = 'text/css';: E7 p k1 w, S+ r7 S1 G
link.href = url;
8 K) ~ Z: d, V+ A Jdocument.getelementsbytagname('head')[0].appendchild(link);0 M+ i2 I$ t' j* l3 @2 r
}: i& |2 I9 e) y( N0 i& l
# c$ {. F0 T" y+ c5 j
动态执行 style8 i8 I% U; W8 _% A
代码如下:
9 w$ o# h& x G2 A$ G& Z* b0 Q) U<script type=text/javascript>
9 ^/ z. r7 w+ c# P- pvar flag = true;( m3 a0 k/ U, v7 g% M6 G: J4 l
if (flag) {. P3 p: I8 D1 H4 [# Z4 z6 l
var style = document.createelement('style');1 n0 D, [; m( O( ~1 J( m# ]. L2 O
style.type = 'text/css'; [0 d7 q; Z1 ?5 m$ b
//var box= document.createtextnode('#box{background:red}');// ie6,7,8 不支持& O8 b2 |& W( b$ L& ]2 Q
//style.appendchild(box);+ R; Z7 l2 ?, ` L; k# @2 J
document.getelementsbytagname('head')[0].appendchild(style);
3 \2 U6 V4 r; x0 E3 u1 zinsertrule(document.stylesheets[0], '#box', 'background:red', 0);
0 I; Q/ E( M4 o$ u; E}
" l/ a( ~9 D* _function insertrule(sheet, selectortext, csstext, position) {
- f1 C5 B! @/ b( ~. t0 J//如果是非 ie6,7,8
9 k3 x% k- P% q; l7 F) n2 @/ fif (sheet.insertrule) {
$ z" a. H) N: H$ ?5 |sheet.insertrule(selectortext + { + csstext + }, position);
5 c4 a% i8 m+ G2 q% F7 L- F//如果是 ie6,7,8
/ n5 k1 M3 I! r3 K} else if (sheet.addrule) {
) }: G, {3 ^) |6 Fsheet.addrule(selectortext, csstext, position);
! C9 t% y; S, ^% |+ P+ e}
+ P# P8 G9 W6 Z; d1 S( O+ Z2 i}
0 m. `: E7 Y& k; }: z; M</script>
0 U2 z9 b+ H. D. ]9 h2 O" }4 u6 J- I) N. E2 N$ H9 Q
更多网页制作信息请查看: 网页制作 |