如果想要加载解析css,可以配合webpack,然后使用css-loader、style-loader来使用。
css-loader是用来加载解析css的,将其处理成对象,方便js进一步处理;
style-loader可以将css-loader处理的对象导入到html中,从而可以在网页中运行。
项目中需要用到动态加载CSS 文件,整理了一下,顺便融合了动态加载JS 的功能写成了一个对象,先上代码:var dynamicLoading = {
css: function(path){
if(!path || path.length === 0){
throw new Error('argument "path" is required !')
}
var head = document.getElementsByTagName('head')[0]
var link = document.createElement('link')
link.href = path
link.rel = 'stylesheet'
link.type = 'text/css'
head.appendChild(link)
},
js: function(path){
if(!path || path.length === 0){
throw new Error('argument "path" is required !')
}
var head = document.getElementsByTagName('head')[0]
var script = document.createElement('script')
script.src = path
script.type = 'text/javascript'
head.appendChild(script)
}
}
对象包含两个完全独立的方法,分别用来加载CSS 文件和JS 文件,参数均为欲加载的文件路径。原理非常的简单:对于不同的加载文件类型创建不同的节点,然后添加各自的属性,最后扔到head 标签里面。经测试,本方法兼容各浏览器,安全、无毒、环保,是 web 开发人员工作常备代码。
下面是调用代码,异常简单:
//动态加载 CSS 文件
dynamicLoading.css("test.css")
//动态加载 JS 文件
dynamicLoading.js("test.js")
方法一,在调用文件的顶部加入下例代码:
document.write(”<script language=javascript src=’/js/import.js’></script>”)(注:有时你引用的文件还可能需要引用其他的js,我们需要将需要的那个js文件也以同样的方法引用进来)
方法二,通过中间界面对js进行应用
就是我们可以在某个html中引用了你需要的js文件,我们可以通过拿到那个html文件的对象,然后在通过这个对象去引用js的方法。
(一般不常用)
方法三:在将下边代码放入Body中:
new_element=document.createElement(”script”)new_element.setAttribute(”type”,”text/javascript”)
new_element.setAttribute(”src”,”import.js”)
document.body.appendChild(new_element)
我们来分析一下关键的几句代码:
首先,我们利用document.createElement(”script”)生成了一个script的标签,设置其 type属性为text/javascript,src为import.js(这里的1.js同2.js放在同一个目录,也可放在不同的目录)。最后将这个标签动态 地加入body中。如此一来,我们就可以调用到不同js文件中的方法了。
注意:<script language=”JAVASCRIPT” src=’1.js’></script>一定要放在body下面。
因为在2.js中用到了body(document.body.appendChild(new_element))
如果将引如2.js的代码放在body上面,也就是说,
进入页面后,还没有生成body就已经执行b.js里的document.body.appendChild(new_element)了。
这时body不存在就会抛JavaScript错误。