点评:这篇文章主要介绍了html动态加载css样式和js脚本示例,需要的朋友可以参考下
- h+ J& T$ c j9 H3 D" O一、动态加载脚本
- J5 x: d/ q9 E6 v. U当网站需求变大,脚本的需求也逐步变大。我们就不得不引入太多的 js 脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本。
' g3 M, I. n' `! c比如:我们想在需要检测浏览器的时候,再引入检测文件。
- l6 j0 P5 w* x; s2 x# Q6 [* u代码如下:' Y: S6 j( ^* x ~3 j3 c9 w
<script type=text/javascript>5 I" G) V8 e9 z! D/ l
window.onload = function(){
3 i5 |1 ?: A. [$ L9 Calert(typeof browserdetect);
3 {- q) h9 M2 Q9 H! K( e}+ g; a3 r* {: @% K$ h q% s
var flag = true; //设置 true 再加载4 M9 @0 N* \% R, l* n0 W6 w+ C
if (flag) {* w V8 o9 s8 B, H7 W4 t& F
loadscript('browserdetect.js'); //设置加载的 js# i7 X- L$ v9 m
}5 B1 U( j& J' V5 {$ y9 T K
function loadscript(url) {
2 z7 \, g6 q/ ]* ?9 Mvar script = document.createelement('script');6 c% o4 f1 I c
script.type = 'text/javascript';
; O U' D* U# ?6 v V' k% I! hscript.src = url;2 E0 P5 Z! u# [
//document.head.appendchild(script); //document.head 表示<head>+ E1 T( B9 R# Q7 e' _( ~4 t. d5 ~
document.getelementsbytagname('head')[0].appendchild(script);
: V9 N% u, E0 T0 E! b1 n3 p, {}
/ F9 E6 W5 J# |( k9 U2 ~; [$ A- u6 o</script>动态执行 js</p> <p>
. e0 o: {6 \: m; w7 G4 u" Y7 u5 F3 f<script type=text/javascript>
/ \* Q2 C7 o+ Q% P3 O/ }1 ^window.onload = function(){
/ v+ J* ]* e- I- E}/ w3 M4 y5 q- m2 t
var flag = true; //设置 true 再加载
6 @% N* U7 P5 M( Tif (flag) {
" J! w' T, M9 l- tvar script = document.createelement('script');
. o# V# `6 u- m, }# P" X( K- kscript.type = 'text/javascript';( _% }& A: r7 `5 K6 k
var text = document.createtextnode(alert('lee')); //ie6,7,8 浏览器报错9 s6 F1 D3 ?4 z, m# ?2 w
script.appendchild(text);
4 r t& U8 F0 }* h8 t0 O6 ddocument.getelementsbytagname('head')[0].appendchild(script);
2 C9 ]$ ~2 Z8 C f h% [/ m6 Y3 G}
/ I5 \( J+ n9 @1 k9 P7 k</script>ie 6,7,8浏览器认为 script 是特殊元素,不能在访问子节点。为了兼容,可以使用 text属性来代替。</p> <p>4 l3 \6 V8 Q) w$ X+ y# _* i& `& X
<script type=text/javascript>
$ m) z" K- ]- ]6 @+ mwindow.onload = function(){3 W7 Z/ Y8 Q1 n" B
}
/ Y) x; ^( T5 Q4 M: ]var flag = true; //设置 true 再加载- h2 U! F) H$ [5 I4 B) e1 Y j' R. ^
if (flag) {- l% S9 k( S+ ]2 b/ R3 a0 y
var script = document.createelement('script');
1 i. v' J" |+ j% wscript.type = 'text/javascript';
+ X0 }" u' u/ t" c& u7 Q6 G- vscript.text = alert('lee');; U) F$ V* q# \
script.appendchild(text);
; x0 D7 V- Q8 k! I9 [' Ndocument.getelementsbytagname('head')[0].appendchild(script);$ b- N! ]/ X m4 H+ h
}
, D* g( O" N* a2 G. K7 v8 g2 }</script>需要做所有浏览器兼容2 I# {/ H9 d6 P9 m) F2 ]& \
二、动态加载样式
3 w, R' N( d5 C9 {$ |" a为了动态的加载样式表,比如切换网站皮肤。样式表有两种方式进行加载,一种是<link>标签,一种是<style>标签。! L2 j v/ ~7 R( t
动态执行 link7 @* y' C& D6 Z4 q+ J6 l
代码如下:
+ z0 v! K* k- Y; y& Xvar flag = true;2 @6 F1 \7 x6 m
if (flag) {
9 H8 L* P; ^6 }0 \3 F, M! Floadstyles('basic.css');
7 `, r6 m. S4 `7 }( I}) ~' J( B( P3 R$ F3 v+ H
function loadstyles(url) {
, w8 a( H0 s1 R* Vvar link = document.createelement('link');link.rel = 'stylesheet';( B' w+ i5 j9 s( N) a
link.type = 'text/css';/ |6 \* m- n3 I+ `
link.href = url;; U* `) J7 [! D/ n
document.getelementsbytagname('head')[0].appendchild(link);
9 u. N8 \' t9 r}
/ P/ v3 G, d1 E% y d
1 Z0 S, Z3 {8 K# k. V, @动态执行 style
' |* W% z& m! q, {+ X5 M代码如下:
- p! w* b# K$ t3 n! ?4 @<script type=text/javascript>
, C) g; H `6 K* g8 Vvar flag = true;3 C; @! w$ F, H* W/ E4 m N& `- O9 A
if (flag) { c: E l' u/ q
var style = document.createelement('style');2 d1 a* y: c' f& J
style.type = 'text/css';2 v5 G, s) C9 o7 k% T6 F# ~
//var box= document.createtextnode('#box{background:red}');// ie6,7,8 不支持
% R" @9 y7 D" d' b4 h; E1 R//style.appendchild(box);
6 r2 V, o$ b6 K9 y, V/ z& `8 W/ edocument.getelementsbytagname('head')[0].appendchild(style);
4 p& B+ u z F% |, k' G7 ninsertrule(document.stylesheets[0], '#box', 'background:red', 0);
+ \6 }& a$ {# M& P! s, j- @7 P}. U$ Y1 H2 u/ `1 p: \
function insertrule(sheet, selectortext, csstext, position) {
1 p; {: w; d! F8 X* J% {//如果是非 ie6,7,8( Q( y6 E: n: c7 s6 o+ d3 \
if (sheet.insertrule) {
' W! }8 w0 A6 p: G0 Y6 fsheet.insertrule(selectortext + { + csstext + }, position);/ N* [; Q$ ~5 L; M% @4 {
//如果是 ie6,7,86 u& D) G* O& x. _5 H
} else if (sheet.addrule) {
0 i8 j' n2 l: L r1 _. Isheet.addrule(selectortext, csstext, position);
& K* J: R0 ^" J+ `}& G7 p; r* k( @8 y
} _# x# Y* j4 B6 M" r9 V
</script>4 g! H1 v( `% u' V" S
2 ~, ?! _. j! k ~7 N% E m更多网页制作信息请查看: 网页制作 |