一个简单的动态加载js和css的jquery代码,用于在生成页面时通过js函数加载一些共通的js和css文件。
//how to use the function below: //$.include(\'file/ajaxa.js\');$.include(\'file/ajaxa.css\'); //or $.includePath = \'file/\';$.include([\'ajaxa.js\',\'ajaxa.css\']);(only if .js and .css files are in the same directory) $.extend({ includePath: \'\', include: function(file) { var files = typeof file == \"string\" ? [file] : file; for (var i = 0; i < files.length; i++) { var name = files[i].replace(/^\\s|\\s$/g, \"\"); var att = name.split(\'.\'); var ext = att[att.length - 1].toLowerCase(); var isCSS = ext == \"css\"; var tag = isCSS ? \"link\" : \"script\"; var attr = isCSS ? \" type=\'text/css\' rel=\'stylesheet\' \" : \" type=\'text/javascript\' \"; var link = (isCSS ? \"href\" : \"src\") + \"=\'\" + $.includePath + name + \"\'\"; if ($(tag + \"[\" + link + \"]\").length == 0) $(\"head\").prepend(\"<\" + tag + attr + link + \"></\" + tag + \">\"); } } }); $.include(\'../js/jquery-ui-1.8.21.custom.min.js\'); $.include(\'../css/black-tie/jquery-ui-1.8.21.custom.css\');
将该函数写入一个common.js文件中,在html中加载该common.js文件,就可以达到目的。
注意:
1.在html5中,<script>标签已经不支持language属性了,所以我删除了:
var attr = isCSS ? \" type=\'text/css\' rel=\'stylesheet\' \" : \" language=\'javascript\' type=\'text/javascript\' \";
中的language=\'javascript\'
2.原作者在写入js和css标签时,用的是:
document.write(\"<\" + tag + attr + link + \"></\" + tag + \">\");
但是经过实践,发现document.write()方法会在写入前清除原页面的所有内容,也就相当于覆盖的意思,这样明显达不到我的需要,我需要在加载页面时动态的向页面导入共通的js和css,而不能清除我原页面的其他任何内容,所以查了下api,我改用了:
$(\"head\").prepend(\"<\" + tag + attr + link + \"></\" + tag + \">\");
这个方法,$(\"head\").prepend()方法的作用是在<head>标签的最前端追加写入内容。
最后,再补充一个方法,也是通过共通js来实现,应该比上面这个方法更容易理解:
Dynamically loading external JavaScript and CSS files To load a .js or .css file dynamically, in a nutshell, it means using DOM methods to first create a swanky new \"SCRIPT\" or \"LINK\" element, assign it the appropriate attributes, and finally, use element.appendChild() to add the element to the desired location within the document tree. It sounds a lot more fancy than it really is. Lets see how it all comes together: function loadjscssfile(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) } if (typeof fileref!=\"undefined\") document.getElementsByTagName(\"head\")[0].appendChild(fileref) } loadjscssfile(\"myscript.js\", \"js\") //dynamically load and add this .js file loadjscssfile(\"javascript.php\", \"js\") //dynamically load \"javascript.php\" as a JavaScript file loadjscssfile(\"mystyle.css\", \"css\") ////dynamically load and add this .css file
本文地址:https://www.stayed.cn/item/22116
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我