当前位置:  开发笔记 > 编程语言 > 正文

如何使用Javascript加载CSS文件?

如何解决《如何使用Javascript加载CSS文件?》经验,为你挑选了9个好方法。

是否可以使用Javascript将CSS样式表导入html页面?如果是这样,怎么办呢?

PS javascript将托管在我的网站上,但我希望用户能够放入他们网站的标签,并且它应该能够将我服务器上托管的css文件导入到当前的网页中.(css文件和javascript文件都将托管在我的服务器上).



1> 小智..:

这是"老派"的做法,希望能在所有浏览器中使用.从理论上讲,setAttribute不幸的是IE6并不能始终如一地支持它.

var cssId = 'myCss';  // you could encode the css path itself to generate id..
if (!document.getElementById(cssId))
{
    var head  = document.getElementsByTagName('head')[0];
    var link  = document.createElement('link');
    link.id   = cssId;
    link.rel  = 'stylesheet';
    link.type = 'text/css';
    link.href = 'http://website.com/css/stylesheet.css';
    link.media = 'all';
    head.appendChild(link);
}

此示例检查是否已添加CSS,因此仅添加一次.

将该代码放入javascript文件中,让最终用户只包含javascript,并确保CSS路径是绝对的,以便从服务器加载.

VanillaJS

下面是一个使用纯JavaScript head根据URL的文件名部分将CSS链接注入元素的示例:


在结束head标记之前插入代码,并在呈现页面之前加载CSS.使用外部JavaScript(.js)文件将导致出现无格式内容(FOUC)的Flash .


也许最好为文档快捷方式使用与$不同的字符,因为它可以轻松地干扰jQuery(就像我的情况一样);)
一旦CSS文件加载后运行回调怎么办?
@ zathrus-writer尝试jQuery.noConflic(); http://api.jquery.com/jQuery.noConflict/
@jonnybojangles使用jQuery.noConflict意味着将所有对jQuery的引用重命名为$.为CSS加载器使用不同的变量名称会简单得多.

2> BoumTAC..:

如果你使用jquery:

$('head').append('');



3> VonC..:

我想像这样的脚本会做的事情:


该JS文件包含以下语句:

if (!document.getElementById) document.write('');

如果要引用您的网站,javascript和css的地址必须是绝对的.

许多CSS导入技术在这篇"使用分支技术对CSS hack说"中的文章中进行了讨论.

但是"使用JavaScript动态添加Portlet CSS样式表"文章还提到了CreateStyleSheet的可能性(IE的专有方法):






















    
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有