`
coconut_zhang
  • 浏览: 541715 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

动态载入/删除/更新外部 JavaScript/Css 文件的代码

 
阅读更多

动态载入 JavaScript/Csss 文件
传统加载外部JavaScript(*.js) 或者 Css(*.css)文件的方法是直接在<head>标签里面进行添加:

复制代码 代码如下:
<head>
<script type="text/javascript" src="myscript.js"></script>
<link rel="stylesheet" type="text/css" href="main.css" />
</head>

这些文件用这种方式会同步加载到当前这个页面。
现在用动态的方式载入JavaScript/Css文件:
用 DOM createElement 方法创建一个 “script” 或者 ”link” 元素
设置相应的属性
使用 appendChild 方法, 把创建的元素插入到 head 标签的末尾
复制代码 代码如下:
function loadjscssfile(filename, filetype){
//如果文件类型为 .js ,则创建 script 标签,并设置相应属性
if (filetype=="js"){
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", filename);
}
//如果文件类型为 .css ,则创建 script 标签,并设置相应属性
else if (filetype=="css"){
var fileref=document.createElement("link");
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", filename);
}
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref);
}
//动态添加一个.js 文件
loadjscssfile("myscript.js", "js");
//像添加.js文件一样,动态添加一个.php文件
loadjscssfile("javascript.php", "js");
//动态一个.css文件
loadjscssfile("mystyle.css", "css");

为了防止多次载入同一个js/css文件, 添加以下判断(这只是粗略检测) 复制代码 代码如下:
//临时载入的文件名
var filesadded="";
function checkloadjscssfile(filename, filetype){
if (filesadded.indexOf("["+filename+"]")==-1){
loadjscssfile(filename, filetype);
//把 [filename] 存入 filesadded
filesadded+="["+filename+"]";
}
else{
alert("file already added!");
}

//第一次载入
checkloadjscssfile("myscript.js", "js");
//重复载入同一个文件, 失败
checkloadjscssfile("myscript.js", "js");

动态删除 JavaScript/Csss 文件
注意:ie6/7 下动态删除样式时有bug. 2种解决方案:1.样式表里不要有import的样式表 2.把link的type属性设置为空值, 然后再修改 href 的地, 或者直接设置href为空, 最后再把type值设置成”text/css” 强制让ie解释新的样式表。

取得相应的 DOM 元素
根据 文件名&文件类型 定位元素
用 DOM removeChild 删除一个 “script” 或者 ”link” 元素
复制代码 代码如下:

function removejscssfile(filename, filetype){
//判断文件类型
var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none";
//判断文件名
var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none";
var allsuspects=document.getElementsByTagName(targetelement);
//遍历元素, 并删除匹配的元素
for (var i=allsuspects.length; i>=0; i--){
if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
allsuspects[i].parentNode.removeChild(allsuspects[i]);
}
}

removejscssfile("somescript.js", "js");
removejscssfile("somestyle.css", "css");

动态更新 JavaScript/Csss 文件
使用 createElement 创建 要更新的 JavaScript/Css 元素
查找要被替换的元素
用 replaceChild 替换元素
复制代码 代码如下:
function createjscssfile(filename, filetype){
if (filetype=="js"){ //if filename is a external JavaScript file
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
}
else if (filetype=="css"){ //if filename is an external CSS file
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
return fileref
}

function replacejscssfile(oldfilename, newfilename, filetype){
var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none";
var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none";
var allsuspects=document.getElementsByTagName(targetelement);
for (var i=allsuspects.length; i>=0; i--){
if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(oldfilename)!=-1){
var newelement=createjscssfile(newfilename, filetype);
allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i]);
}
}
}
//用 "newscript.js" 替换 "oldscript.js"
replacejscssfile("oldscript.js", "newscript.js", "js");
//用 "newscript.css" 替换 "oldscript.css"
replacejscssfile("oldstyle.css", "newscript.css","css");
分享到:
评论

相关推荐

    AJAX 载入JS文件,载入CSS文件,载入JS函数,执行JS

    - **加载JS文件**:通过`loadExternalScript`函数将外部JavaScript文件添加到页面中。 - **加载CSS文件**:通过`loadExternalStyle`函数将外部CSS文件添加到页面中。 4. **执行JS代码**: - **执行内联JS代码**:...

    页面载入等待代码(用javascript技术实现)

    这可以通过CSS和JavaScript组合实现,例如使用CSS3动画或JavaScript动态改变元素的样式。以下是一个简单的例子,创建一个旋转的加载图标: ```css .loading-spinner { width: 20px; height: 20px; border: 3px ...

    解决ie9、ie10本地css加载不上的解决方法实例

    此外,IE9和IE10对CSS文件的请求可能会受到缓存策略的影响,导致更新的样式无法即时生效。 解决IE9和IE10本地CSS加载不上的问题,我们可以尝试以下几种方法: 1. **禁用缓存**:在开发过程中,浏览器缓存可能会...

    xml 外部载入图片

    XML(Extensible Markup Language)是一种...总结来说,XML外部载入图片涉及XML解析、URL处理、图片显示以及可能的样式和布局管理等多个步骤。通过理解这些知识点,开发者可以构建出能够灵活处理图像数据的应用程序。

    Js载入文件并显示进度条JSLoader

    JSLoader是一种利用JavaScript实现的文件加载工具,它主要用于动态地加载外部资源,如JavaScript文件、CSS样式表、图片等,并且在加载过程中提供进度反馈,以提升用户体验。在Web开发中,尤其在处理大量异步加载时,...

    jQuery权威指南-源代码

    7.10 综合案例分析—使用uploadify插件实现文件上传功能 /232 7.10.1 需求分析/232 7.10.2 效果界面/233 7.10.3 功能实现/234 7.10.4 代码分析/236 7.11 本章小结/241 第8章 jQuery UI插件/242 8.1 认识...

    在layui tab控件中载入外部html页面的方法

    然而,实现难度较高,需要确保JavaScript文件中的代码能够正确执行,并且不会与主页面中的其他脚本产生冲突。 总结来说,上述三种方法各有优缺点。在实际开发中,开发者应根据项目的具体需求和外部页面的特性来选择...

    webview加载本地的html文件

    注意,加载本地文件时,为了保证安全性,通常会禁用WebView的JavaScript执行,但若需要执行JavaScript代码,可以使用`webView.getSettings().setJavaScriptEnabled(true);`来启用。 在实际应用中,我们可能还需要对...

    flash载入html

    它与CSS(Cascading Style Sheets)和JavaScript一起,构成了现代网页开发的三大核心技术。HTML可以包含文本、图像、链接等元素,并通过CSS进行样式定义,JavaScript则负责添加动态功能。 “Flash载入HTML”的技术...

    JavaScript实战

    外部JavaScript文件 5 1.3 第一个JavaScript程序 7 1.4 把文本写到Web页面上 9 1.5 附件外部JavaScript文件 10 1.6 追踪错误 12 1.6.1 Firefox JavaScript控制台 13 1.6.2 显示Internet Explorer错误对话框 14 1.6.3...

    DIV+CSS布局初级教程

    - **外部调用**:将CSS代码写在一个单独的.css文件中,并通过`&lt;link rel="stylesheet" type="text/css" href="styles.css"&gt;`链接到HTML文档。 - **双表法**:使用两份样式表,一份用于普通浏览,另一份用于打印或...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part1.rar

     第5章 动态修改样式和层叠样式表   5.1 W3CDOM2样式规范   5.1.1 CSSStyleSheet对象   5.1.2 CSSStyleRule对象   5.1.3 CSSStyleDeclaration对象   5.1.4 支持的匮乏   5.2 当DOM 脚本遇到...

    WebView加载html,javascript,url

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部显示网页内容,而不需跳转到外部浏览器。WebView不仅支持HTML,还支持CSS、JavaScript等网页技术,为用户提供了一种方便的方式在原生应用中...

    基于KISSY的四角遮罩特效.zip

    文件列表中的`index.html`是项目的主入口文件,通常包含HTML结构、引用的外部CSS和JavaScript文件,以及可能的内联JavaScript代码。在这个案例中,`index.html`很可能是用来展示四角遮罩效果的网页,可能包含了KISSY...

    精通JavaScript

    • 1.3.htm 调用外部JavaScript文件 • 1.3.js 1.3.htm使用的外部JavaScript文件 第2章(\第2章) • 2.1.htm Infinity应用 • 2.2.htm NaN与isNaN()的用法 • 2.3.htm Infinity值...

    【Web网页设计制作-毕业设计期末大作业】网络建设HTML网站源码.zip

    9. 载入速度优化:减少HTTP请求,合并CSS和JavaScript文件,压缩图片,利用CDN(内容分发网络)等方法,可以提高网页加载速度,提升用户体验。 10. W3C标准:遵循W3C制定的HTML和CSS规范,可以确保代码质量,并有助...

    完整版检测浏览器网页是否载入完毕例程.rar

    这个"完整版检测浏览器网页是否载入完毕例程"提供了一种方法来解决这个问题。下面将详细解释这一技术及其应用场景。 首先,我们需要理解浏览器加载网页的过程。当用户在浏览器中输入URL并按下回车键,浏览器会向...

    CSS对Web页面载入效率的影响分析总结

    1. 尽量减少CSS文件大小:通过压缩、去除空格和注释来减小文件体积,使用CSS预处理器(如Sass或Less)来组织代码,提高可读性和可维护性。 2. 优化选择器:使用更具体的选择器(如ID和类)来提升性能,避免使用...

Global site tag (gtag.js) - Google Analytics