特意说明一下,以上代码引用了3次 document,进行了3次全局变量查找,我们可以在函数内第一句代码前加入 var doc = document;,以后引用 doc 变量来替代 document 就可以了,减少全局变量查找。(请读者自行修改)
动态样式
类似动态脚本,能够把CSS样式动态包含到HTML页面中的元素的方法有两种:
使用link元素用于包含来自外部的文件
使用<style>元素用于指定嵌入样式
1. 使用link包含外部文件
常用版
function loadStyles (url) {
var link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = url;
var head = document.head || document.getElementsByTagName('head')[0];
head.appendChild(link);
}
动态脚本
总所周知,使用
<script>
元素可以向页面中插入JavaScript代码,具体有两种方式:定义
动态脚本,一般指的是在页面加载时不存在,但将来的某一时刻通过修改DOM动态添加的脚本。
1. 加载外部JavaScript文件
入门版
有人就会问,那我怎么监听这个动态脚本是否加载完成了?不急,还有进阶版嘛
进阶版
简单说明一下,
script.readyState
在除IE下的浏览器输出都是undefined
的,而loaded
是代表数据加载完成,complete
是代表数据已经准备好了。这两个状态在不同的IE下表现又不一致,时而出现前者又不出现后者,时而出现后者又不出现前者,所以上面写法最保险了。2. 直接在script标签插入JavaScript代码
入门版
上述代码在高级版本的浏览器中能正常运行,但在IE会报错。IE将
<script>
视为一个特殊的元素,不允许DOM访问其子节点。不过,可以使用<script>
元素的text属性来制定JavaScript代码。请看进阶版进阶版
特意说明一下,以上代码引用了3次
document
,进行了3次全局变量查找,我们可以在函数内第一句代码前加入var doc = document;
,以后引用doc
变量来替代document
就可以了,减少全局变量查找。(请读者自行修改)动态样式
类似动态脚本,能够把CSS样式动态包含到HTML页面中的元素的方法有两种:
link
元素用于包含来自外部的文件<style>
元素用于指定嵌入样式1. 使用link包含外部文件
常用版
需要注意的是,必须将
<link>
元素添加到<head>
元素上而不是<body>
元素上,才能保证在所有浏览器中的行为一致。2. 使用
<style>
元素包含嵌入的CSS常用版
这里也运用了
try catch
语句,为了兼容IE浏览器。