返回列表 发新帖

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

182.2k 7
swmozowtfl 发表于 2015-7-10 22:24:59|湖北 | 查看全部 阅读模式
点评:这篇文章主要介绍了html动态加载css样式和js脚本示例,需要的朋友可以参考下- c, W9 |; Q- g" R! k
一、动态加载脚本8 n# \4 n9 J8 A3 L1 T' A
当网站需求变大,脚本的需求也逐步变大。我们就不得不引入太多的 js 脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本。
1 @2 u' u/ X$ O" x. ]比如:我们想在需要检测浏览器的时候,再引入检测文件。
% R  m- V1 ~- X9 P- i代码如下:& t6 s8 V+ ~5 c# b$ @* \
<script type=text/javascript>
' @! @' A2 {' fwindow.onload = function(){
  ~/ Q* S, A* h- Ualert(typeof browserdetect);/ X$ X' S) }$ |5 J3 J* r+ Z
}
& [1 ^* F( p& O( lvar flag = true; //设置 true 再加载
6 V, w* X! C+ @# l8 Nif (flag) {
2 V0 l- m- O  w" g" H/ }. wloadscript('browserdetect.js'); //设置加载的 js+ q0 w$ I" W, \  u8 {
}
# U( n! G+ m9 ]: @function loadscript(url) {
* j9 v' g/ u7 c# C* Evar script = document.createelement('script');
& u7 d; u2 }3 \$ [! w: [script.type = 'text/javascript';
5 q, U# X" x% q, z4 T9 b7 fscript.src = url;
4 A5 C9 U1 n: l, m  G7 [$ r//document.head.appendchild(script); //document.head 表示<head>9 P1 j& z7 c. U* \6 @; G" O
document.getelementsbytagname('head')[0].appendchild(script);3 B, B, K' G. E, X/ o
}( Z4 P9 ?( ?- ?6 A5 {' h
</script>动态执行 js</p> <p>
6 c8 l, ^  k1 o5 L7 a6 d* h<script type=text/javascript>
/ ^: ?3 K' A8 K: I% mwindow.onload = function(){
$ w- S1 ~6 `  o/ U}
  S+ M3 B9 \# N, Y: O5 ?9 wvar flag = true; //设置 true 再加载
3 ?( [9 }) g9 E4 V' Tif (flag) {4 y* x3 O1 {' V/ t- Y2 B3 P
var script = document.createelement('script');
) I3 q& o/ Z* p& H: k1 X8 iscript.type = 'text/javascript';
/ H' B$ j& z3 z/ yvar text = document.createtextnode(alert('lee')); //ie6,7,8 浏览器报错
. v- z/ O# j- Dscript.appendchild(text);
1 N& `, M9 j, `. m/ p: ]# Cdocument.getelementsbytagname('head')[0].appendchild(script);
% p( e0 B, W  b* w}
6 U8 `( L) I: U</script>ie 6,7,8浏览器认为 script 是特殊元素,不能在访问子节点。为了兼容,可以使用 text属性来代替。</p> <p>
9 f; A% n" W4 U8 B: U<script type=text/javascript>3 Y7 j' ]$ R# x
window.onload = function(){
3 a0 M' `3 P, j8 a' ?9 Y4 A}) v5 D! g9 O: x8 P2 a0 S5 u
var flag = true; //设置 true 再加载
0 Z4 A3 D# k7 S8 U& C9 Tif (flag) {
4 X; y3 ^9 D: M; b8 U) i- Rvar script = document.createelement('script');( ]4 P, }4 L% Z
script.type = 'text/javascript';
; ^( x0 A# w6 L" q8 u$ y! D! B; Ascript.text = alert('lee');
* I! ?8 o' l+ tscript.appendchild(text);1 f2 K1 [. o3 I
document.getelementsbytagname('head')[0].appendchild(script);* ~  _& w: d) c. Z9 A6 ]/ f& F& J
}
/ W- e3 l4 p8 _5 W</script>需要做所有浏览器兼容
- t- t, Q9 E7 q. N二、动态加载样式
1 J) b, R7 k; Y/ C4 ~9 e0 @' C; x6 U- n; j为了动态的加载样式表,比如切换网站皮肤。样式表有两种方式进行加载,一种是<link>标签,一种是<style>标签。
  M$ ]' o  O( k动态执行 link
( q) w6 S2 n& S' K- U( R代码如下:
7 r/ d5 b! o- x- Q" c  ?. vvar flag = true;
) P. Z* S! l( x& oif (flag) {/ U7 x1 f: e7 U
loadstyles('basic.css');. A0 ^  }8 ^+ `! [$ A* A
}; x) H2 R# ^! r! N' `* ^/ T1 v4 Q$ U
function loadstyles(url) {% O: k( S* j# W8 L; U
var link = document.createelement('link');link.rel = 'stylesheet';
4 C+ ?% O, d8 O0 S7 H9 t& Nlink.type = 'text/css';6 i* p0 x9 `, R  n
link.href = url;6 L. D& N) a8 c7 ^4 i
document.getelementsbytagname('head')[0].appendchild(link);
7 P, v2 K3 E5 J}1 o( h8 ~- c1 r6 f% N
: L, @( Q6 \$ R
动态执行 style5 w2 N7 v8 z! F. c9 f
代码如下:; R" @3 ]$ X# V* @' c5 g* V4 P
<script type=text/javascript>
/ P& z. }* D) E0 L; C6 g6 T: Fvar flag = true;
1 `! m0 K) {5 lif (flag) {
7 ], L. b4 s; r, t3 Avar style = document.createelement('style');, l3 l7 Y8 S: b/ s* U
style.type = 'text/css';2 F- a6 ]* U9 _; s6 e
//var box= document.createtextnode('#box{background:red}');// ie6,7,8 不支持
! u/ X, O6 ?8 L# A1 i//style.appendchild(box);
1 w/ @, k& u5 J3 K1 h0 |  a- ndocument.getelementsbytagname('head')[0].appendchild(style);
9 ?5 n  o  `' W5 Cinsertrule(document.stylesheets[0], '#box', 'background:red', 0);
' z/ {! \  M: V) `  d: {5 B}  h8 X1 b3 o  K1 c, d) T
function insertrule(sheet, selectortext, csstext, position) {
8 D& c* M9 \6 A3 ^% c//如果是非 ie6,7,8& N% c; p0 U0 I7 |
if (sheet.insertrule) {
2 z7 Z. j  D) e& D" ~' T) a8 lsheet.insertrule(selectortext + { + csstext + }, position);2 g. A% x# [% ?4 v- I
//如果是 ie6,7,88 u: ]0 R. ?& Q3 X9 u- f! F
} else if (sheet.addrule) {9 D# C7 U/ j* Z8 S6 ~
sheet.addrule(selectortext, csstext, position);
6 v4 P* R* ?8 Q3 T}# F; T: D* p/ |1 ^! q4 j. s7 i
}
" j4 q- D  p2 Y" r, s: s) ~5 C</script>
4 j8 f: r& o) x- M8 K$ l/ D" m( M, j. j4 _! a4 ^
更多网页制作信息请查看: 网页制作

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