研究编写这个专题的心思来源于阳哥分享的javascript加载总结的调研文档。
当然这个话题很火也很深,路也很长,开启这个话题,简单地普及一些知识。
简单记录,学习一下。
开始要说的可能就是onload与onreadystatechange的api支持
其实简单地去理解的话,对于外部资源的应用有两个我们head里面常用的标签link和script
测试浏览器版本说明
- Opera 11.51
- Chrome 6.0.401.1
- FF 3.6.23
a. link标签
------个人定义的所谓静态其实就是
<link type="text/css" rel="stylesheet" href="****" />
1. IE 6/7/8/9多支持onload,
Opera支持onload
对于onreadystatechange事件,有两个状态readyState(loading,complete)
2. FF/Safari/Chrome不支持onload,
也不支持onreadystatechange
------个人定义的所谓动态是js去创建link标签
<script type="text/javascript">
/*封装代码
*创建给定属性的html元素
*@param type ----创建元素的类型
*@param attrs ----属性集合
*@return elment -------带有给定属性的元素对象
*/
function createTag(type,attrs){
var element = document.createElement(type),
item ;
for(item in attrs){
//加上一层本地属性的判断
if(attrs.hasOwnProperty(item)){
element.setAttribute(item,attrs[item]);
}
}
return element;
}
var link = createTag('link',{
type : "text/css",
rel : "stylesheet",
href : "***"
});
link.onreadystatechange = function(){
//执行代码
}
link.onload = function(){//执行代码}
document.getElementsByTagName('head')[0].appendChild(link);
</script>
1. IE 6/7/8/9支持onload和onreadystatechange
2. Opera也支持
3. FF/Chrome/Safai 不支持
b. script标签
<script type="text/javascript" src="**"></script>
1. IE 6/7/8触发onreadystatechange
2. IE 9 先触发onreadystatechange 后触发onload
3. FF/Safari/Chrome/Opera 触发onload
ie下的预加载
window.onload = function(){
var script = document.createElement("script");
script.setAttribute("type","text/javascript");
script.onreadystatechange = function(){
if(this.readyState == 'loaded'){
alert("preload");
document.getElementsByTagName("head")[0].appendChild(script);
}else if(this.readyState == "complete"){
this.onreadystatechange = null;
}
}
script.src="****jquery.min.js?_="+(new Date()).getTime();
}
分享到:
相关推荐
3. **事件监听:** 如果需要在脚本加载完成后执行某些操作,可以使用`script.onload`或`script.onreadystatechange`事件。 4. **兼容性:** 这些方法适用于所有现代浏览器,但在一些较旧或非主流的浏览器中可能需要...
DOCTYPE html>`声明了文档类型,`<link>`用于引入样式表,`<script>`标签可以设置`defer`或`async`属性来控制脚本加载时机。 总的来说,JavaScript的原生对象和方法构成了其强大的功能基础,它们在DOM操作、HTTP...
这段代码定义了一个名为loadJs的函数,它创建了一个script元素,并为它添加了一个onload事件处理器或一个onreadystatechange事件处理器,以确保在文件加载完成后执行回调函数。然后将script元素添加到了document....
此外,为了实现组件的按需卸载,`bus.removeUi`函数被用来移除已加载的JS和CSS文件,通过删除对应的`<script>`和`<link>`标签,以及清除加载记录。 动态加载JS和文件还有其他高级技巧,例如: 1. **模块化加载**:...
这段代码创建一个`<script>`元素,设置其`onreadystatechange`和`onload`事件处理函数,以检测文件是否已加载。同时,它还设置了一个超时函数`doError`,以防文件加载失败。这种方法对加载过程进行了更细致的控制,...
在上述代码中,通过给`<script>`标签添加`onload`和`onreadystatechange`事件监听器,我们可以知道何时脚本加载完成并执行回调函数。 接下来,我们看看使用jQuery来实现动态加载资源的方法。jQuery提供了一种更加...
使用`<script>`标签的`archive`属性可以将多个JS文件打包为一个压缩文件,但该属性同样不被现代浏览器支持: ```html <script archive="utils.jar" src="animation.js"></script> ``` #### 8. 获取当前选中文本 ...
它还添加了`onload`和`onreadystatechange`事件处理程序,以确保在js文件加载完成并执行回调函数时,脚本可以正确处理。如果是css文件,则直接创建一个`link`元素并设置其`rel`和`href`属性,然后将其追加到`head`...
JavaScript是Web开发中不可或缺的一部分,这里我们探讨一些实用的小技巧,可以帮助你提升代码效率和用户体验。 1. **设置收藏图标**: 在HTML头部添加`<link>`标签,可以为浏览器收藏夹设置自定义图标,例如: ``...
总结来说,`ensure`工具通过创建元素并插入到DOM中来实现动态加载,对于不支持`onload`或`onreadystatechange`的浏览器,如Safari 2,它采用其他方法来检测加载状态。虽然大部分浏览器对此处理相对简单,但像IE6这样...
1. 使用JavaScript原生方法或jQuery创建和添加`<script>`和`<link>`标签。 2. 监听加载状态以确保文件已加载。 3. 使用`window.parent`、`window.top`、`frames`或`window.frames`进行跨iframe通信。 4. 使用`post...
对于js文件,创建`<script>`元素并监听`onload`或`onreadystatechange`事件;对于css和less文件,创建`<link>`元素。将文件路径添加到`classcodes`数组中可以避免重复加载同一个文件。 3. **文件加载判断**: 在...
加载过程根据文件扩展名决定创建`<script>`还是`<link>`标签,同时根据浏览器类型设置合适的事件监听器,以确保脚本加载完成后的回调处理。 通过以上对`pjblog中的UBBCode.js`的知识点解析,我们可以看到这款脚本...