返回列表 发新帖

html动态加载css样式和js脚本

182.1k 7
swmozowtfl 发表于 2015-7-10 22:24:59|湖北 | 查看全部 阅读模式
点评:这篇文章主要介绍了html动态加载css样式和js脚本示例,需要的朋友可以参考下
& u& U/ y) ?. E7 a: R+ p一、动态加载脚本: c/ U3 C7 x7 s# f! A3 H9 c
当网站需求变大,脚本的需求也逐步变大。我们就不得不引入太多的 js 脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本。) j3 s( o/ s; Y4 M
比如:我们想在需要检测浏览器的时候,再引入检测文件。
$ b' m6 ~: }1 P" u5 C代码如下:
) N' @) p; r  m! Q2 b7 x<script type=text/javascript>8 Y( l9 g$ J/ ?! i, {6 p
window.onload = function(){
& P; b3 H( B, o  q& X& Dalert(typeof browserdetect);; P+ U6 ?1 R  S0 o* }  X9 A
}" B0 s2 i5 `0 r. E/ o/ t% V9 C
var flag = true; //设置 true 再加载' t5 w* @' I5 k' _) z& ~% _- l
if (flag) {' l. W: J! B) d% s8 K& L- I
loadscript('browserdetect.js'); //设置加载的 js
: o+ H1 f" r: C/ P6 _! F: q}+ z# {+ a) K! `  Z4 N
function loadscript(url) {: a/ b  I, R( W# \3 O5 b7 A
var script = document.createelement('script');3 z' R) q$ G" Z1 `  N( A8 J2 Y  [4 X
script.type = 'text/javascript';! B. @5 I/ c' i
script.src = url;
, D* m2 U; _3 N9 j( [" J& U  b& [//document.head.appendchild(script); //document.head 表示<head>
0 {/ @6 b' S* L2 \document.getelementsbytagname('head')[0].appendchild(script);7 v  q4 h, g& p5 x7 S* L& i0 y
}9 f! `) L* B) \/ n
</script>动态执行 js</p> <p>* k5 `8 ~- R- M2 }9 R
<script type=text/javascript>
/ m7 r% y& H+ `! H$ Mwindow.onload = function(){
/ j4 J+ O5 C/ Z: G' f1 Q/ L! o: n6 D}
( c6 B5 E' z) h+ R8 cvar flag = true; //设置 true 再加载/ A! {; r! f& R) S0 I& M  ]
if (flag) {
1 q! t6 u- W7 Vvar script = document.createelement('script');0 ?5 \2 Y/ [& L& l9 |) ]/ P& J
script.type = 'text/javascript';' j* O6 G% G5 s+ v" ~' B  @
var text = document.createtextnode(alert('lee')); //ie6,7,8 浏览器报错
8 o: u9 B: }  \: H5 |script.appendchild(text);* K! I1 D+ ^$ o
document.getelementsbytagname('head')[0].appendchild(script);
. q1 X4 e* b0 E3 t}
; p( `' j6 p/ E</script>ie 6,7,8浏览器认为 script 是特殊元素,不能在访问子节点。为了兼容,可以使用 text属性来代替。</p> <p>
% w3 h# c" L+ s7 k<script type=text/javascript>& {  b$ ]3 m" ^- a; k
window.onload = function(){
5 f* V/ g9 J  |& ~1 }}
3 w- P) Y" z1 d& E) Vvar flag = true; //设置 true 再加载2 C+ L1 e6 r+ a4 z3 d0 d4 K8 x
if (flag) {6 u( D# o9 w2 u
var script = document.createelement('script');
+ `2 z$ b5 E/ Q0 @script.type = 'text/javascript';
& o6 J9 v% F9 b$ lscript.text = alert('lee');0 {) n6 S4 I& c( r
script.appendchild(text);" n5 }- r/ }2 ]
document.getelementsbytagname('head')[0].appendchild(script);# F: k( ]; B3 @* V1 Y# b
}
$ r, w! a# r. [% r& _$ d</script>需要做所有浏览器兼容% k4 {0 i% S. u: M4 W4 o" R/ x, T
二、动态加载样式
, `: |5 J& x+ G5 \为了动态的加载样式表,比如切换网站皮肤。样式表有两种方式进行加载,一种是<link>标签,一种是<style>标签。
* Q' B3 ^% g! @! L  P动态执行 link, p; o6 ~0 e& @! b9 W+ V
代码如下:4 H7 [7 X& _& f* {
var flag = true;/ x; O# R. k# h' j+ A% s1 q
if (flag) {* w% C$ z* X, ?7 h9 X) d
loadstyles('basic.css');$ V0 J0 d% ]- N' N
}
' s! y$ Y, L0 U1 D6 s' }function loadstyles(url) {
) D- R( v7 |1 [var link = document.createelement('link');link.rel = 'stylesheet';4 s9 P  s/ b  o
link.type = 'text/css';4 Q; ?2 Q0 g7 Y. V" ]7 U, e& z
link.href = url;
: l) L8 g7 N$ Y% [document.getelementsbytagname('head')[0].appendchild(link);
- i% ^* k) V+ R% }4 `8 j3 l' N}
; t; i+ M1 n- }$ E. N& F
8 R0 i' F' h7 ]0 J& B$ ^. ?动态执行 style
0 R2 }& o4 e+ X. t; x代码如下:
$ _6 |: h, R- x  Z$ P5 m<script type=text/javascript>0 X1 Y, n+ _5 }1 K0 s- P
var flag = true;1 o: G5 \3 I  K0 P: K
if (flag) {! Q$ z' Z& b& {0 t! g
var style = document.createelement('style');
4 P% J! R3 j8 r$ [, R- {& rstyle.type = 'text/css';
" K4 P6 r4 D2 S/ ?$ u//var box= document.createtextnode('#box{background:red}');// ie6,7,8 不支持; `# B7 M7 a9 T6 a8 z. Y. {3 P4 i
//style.appendchild(box);
; _& Z1 A' A; _3 c; idocument.getelementsbytagname('head')[0].appendchild(style);# C! N! R, c( `: g% m% }. m
insertrule(document.stylesheets[0], '#box', 'background:red', 0);
/ I5 {6 V7 r, _/ }2 z4 g}  i' q7 w) }: ?$ g  D
function insertrule(sheet, selectortext, csstext, position) {2 c7 f" m7 h) x- n
//如果是非 ie6,7,8: E( Q" ^5 L, i+ v6 y
if (sheet.insertrule) {4 E9 J# ^; O$ ^( D3 \) ~
sheet.insertrule(selectortext + { + csstext + }, position);
, [/ L: e; B! \; w//如果是 ie6,7,8
* p- b7 k& ?$ K8 S3 G  v; l% c4 g" B} else if (sheet.addrule) {2 U/ F4 h# u0 a( ~! Y3 R
sheet.addrule(selectortext, csstext, position);1 O% a  F0 E- m/ ]; n' L
}
9 A& p+ n3 C& L3 y}
- ~6 k" ~! M+ }</script>
; m5 ~) e. Q- k4 P6 M2 X5 s5 z$ L" z. U7 @; ?7 |) N% p8 R) G# T
更多网页制作信息请查看: 网页制作

回复|共 7 个

wwdu926a 发表于 2015-7-23 19:00:10|澳大利亚 | 查看全部
系统居然怀疑我灌水,我身边又没有水龙头。哦…明白了,身上有一个……
GoodyFouppy 发表于 2015-7-23 19:04:34|瑞士 | 查看全部
经过你的指点 我还是没找到在哪 ~~~
seazvyt 发表于 2015-7-23 19:04:36|Reserved | 查看全部
老天不公啊.....
seazvyt 发表于 2015-9-11 21:04:16|香港 | 查看全部
我.......伤心
gevaemaidovef 发表于 2015-9-11 21:04:19|台湾 | 查看全部
我又回复了
bqtklouu 发表于 2015-9-11 21:04:30|浙江 | 查看全部
我的我的 忘记了 呵呵
bqtklouu 发表于 2015-9-11 21:05:02|美国 | 查看全部
哈 你逗逗他啊

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

得知互动是一个融创意、设计、开发、营销、生活、互联网于一体的专业交流分享平台。
Copyright © 2026 得知互动-专注Ai与站长技术交流社区-Ai交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表