返回列表 发新帖

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

182.2k 7
swmozowtfl 发表于 2015-7-10 22:24:59|湖北 | 查看全部 阅读模式
点评:这篇文章主要介绍了html动态加载css样式和js脚本示例,需要的朋友可以参考下
& |# C8 f6 }& g: o/ f3 m一、动态加载脚本9 ^& z% e- L0 j" L& S0 ^
当网站需求变大,脚本的需求也逐步变大。我们就不得不引入太多的 js 脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本。/ x& ~5 k$ b' }- O/ p6 ^9 [
比如:我们想在需要检测浏览器的时候,再引入检测文件。
2 _+ ^" }" R, A( L: x8 x  `- `代码如下:- g1 D. p) u- }; q
<script type=text/javascript>5 D: D, Y+ W4 c
window.onload = function(){4 y8 Y  U: c, l( E' u, z
alert(typeof browserdetect);. c$ D; f% ~* S9 U( H# `: H) \
}0 E' t2 i8 ^7 e5 {
var flag = true; //设置 true 再加载- M+ s6 L' R" `! M& d8 V* n
if (flag) {
( o. E- g0 k: x3 rloadscript('browserdetect.js'); //设置加载的 js6 I9 e# U2 P; k9 M
}
- M  R& @0 p& s9 rfunction loadscript(url) {1 g. `1 C# O' j- L- A
var script = document.createelement('script');
+ }, I; W( {# d% Zscript.type = 'text/javascript';( @1 i5 I! o' |: t
script.src = url;6 Q& O  R8 \, S, \2 ?* \4 b
//document.head.appendchild(script); //document.head 表示<head>0 `5 f# g) Z. N. d/ O$ n
document.getelementsbytagname('head')[0].appendchild(script);
& N! V" D$ t$ [9 Z) y& b}
: m5 G, Z9 r9 s, D& \</script>动态执行 js</p> <p>6 V/ w+ A! S: s/ \' l6 F
<script type=text/javascript>
# G4 ?7 m3 N% I+ kwindow.onload = function(){
0 e$ B1 z8 b' T( F4 S" d}3 `2 z: R4 f5 q& a: R
var flag = true; //设置 true 再加载7 `$ D7 n0 h7 x9 N0 J+ }* y
if (flag) {
4 R$ U6 U# G7 i  Xvar script = document.createelement('script');
9 e7 E4 B5 @- z& Hscript.type = 'text/javascript';
8 d8 W9 p/ v' ?var text = document.createtextnode(alert('lee')); //ie6,7,8 浏览器报错( e* l0 h' w6 f' t
script.appendchild(text);0 {- q" t  {- u
document.getelementsbytagname('head')[0].appendchild(script);
: g8 h5 G% x8 X* C" k/ v4 T7 E. u}& D) L2 y. l" n( B
</script>ie 6,7,8浏览器认为 script 是特殊元素,不能在访问子节点。为了兼容,可以使用 text属性来代替。</p> <p>
* W; S5 _9 ^! J) V4 g<script type=text/javascript>4 N3 h3 l# B  t, O5 \" U# O- R
window.onload = function(){
: L" ^* [* T$ Z; q0 T}
4 O' Y* }4 O- t6 P+ svar flag = true; //设置 true 再加载- ~/ K, S% b: c9 e( z
if (flag) {
0 {( S# c9 @( a2 }! n; E* p( Gvar script = document.createelement('script');
; M! V; A' D7 y: X  ^) Rscript.type = 'text/javascript';0 ?) o) b, E1 x! ]2 ^
script.text = alert('lee');
1 m% o( d, s: x: F6 v* U( }9 tscript.appendchild(text);. ^7 y% m9 O9 Z8 A
document.getelementsbytagname('head')[0].appendchild(script);4 R4 k5 t# i4 {) M  X9 }; {
}7 r' p; G' g. x( E8 Y" T0 r
</script>需要做所有浏览器兼容7 x, `2 ^' i( }9 M( N0 x* a5 A
二、动态加载样式( Z  Q" Y5 U6 u$ G
为了动态的加载样式表,比如切换网站皮肤。样式表有两种方式进行加载,一种是<link>标签,一种是<style>标签。
3 i' k+ Z1 ?5 k: e动态执行 link& w: L+ F" [! V) N& L
代码如下:+ p# s9 G( h/ n0 x
var flag = true;
9 G3 x( G/ t( x1 m7 Kif (flag) {
) U) i! x! r0 Z- `1 G3 Gloadstyles('basic.css');
# K' x# n5 X  H! a, }2 B: I}% C. b' ^+ w9 m+ b
function loadstyles(url) {
0 v: _* M3 C0 P2 tvar link = document.createelement('link');link.rel = 'stylesheet';
% }% W0 l/ q! n: H& N9 rlink.type = 'text/css';! S7 m' m! W. d9 ]& Y6 O
link.href = url;
, p+ X: [$ E, a' Z- P" T5 @document.getelementsbytagname('head')[0].appendchild(link);
* {8 p% w2 V" v# ?' S$ g}+ w; T3 X  z: @7 }5 j- Y, r  p8 m, V- I

! M/ h6 k% k9 k/ V6 o. S动态执行 style
+ A" @5 \5 O, {* J代码如下:2 O; l( z5 [. j) u
<script type=text/javascript>
! J) @: S8 |4 y$ N4 @var flag = true;
* [2 p( `: ^2 u/ rif (flag) {0 ]8 r% g  G7 i& l
var style = document.createelement('style');
2 O) y/ W  O! T. p9 Y+ ^style.type = 'text/css';1 v- w) `+ W# x" F3 y
//var box= document.createtextnode('#box{background:red}');// ie6,7,8 不支持: N0 W( M' v& B" V
//style.appendchild(box);1 X' z9 \# ~2 {$ X0 ~
document.getelementsbytagname('head')[0].appendchild(style);
/ l& j: V2 K5 W+ o) B' hinsertrule(document.stylesheets[0], '#box', 'background:red', 0);7 |6 J# d* W0 i% }
}7 h$ m5 }. V# T: h* x
function insertrule(sheet, selectortext, csstext, position) {& `4 C, `7 I. e: V4 l6 N+ H
//如果是非 ie6,7,8% y; x9 n2 L* z1 I- b/ w
if (sheet.insertrule) {
2 b+ _5 M4 E9 z# n4 @! m3 B- e+ Esheet.insertrule(selectortext + { + csstext + }, position);
. w$ e% Q4 d4 ^& _//如果是 ie6,7,8
, D- J, ]" m) l! v0 Q} else if (sheet.addrule) {
9 Y: p9 {: n. J' p7 A3 X, t- S* Ysheet.addrule(selectortext, csstext, position);+ g: @; m# m6 a# K' l- w
}: Q1 ?; E6 W* O& r/ l: w
}9 `" r7 s# Z! V% Y1 G$ U  ~
</script>
- {1 [1 V$ A4 k+ B! @
% _6 b1 N& O0 P" I更多网页制作信息请查看: 网页制作

回复|共 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客服 返回顶部
快速回复 返回顶部 返回列表