一尘不染

如何使用Javascript加载CSS文件?

javascript

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

附言:JavaScript将托管在我的网站上,但我希望用户能够放入<head>其网站的标签,并且它应该能够将托管在我的服务器上的CSS文件导入当前网页。(css文件和javascript文件都将托管在我的服务器上)。


阅读 408

收藏
2020-04-23

共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链接注入元素的示例:

<script type="text/javascript">
var file = location.pathname.split( "/" ).pop();

var link = document.createElement( "link" );
link.href = file.substr( 0, file.lastIndexOf( "." ) ) + ".css";
link.type = "text/css";
link.rel = "stylesheet";
link.media = "screen,print";

document.getElementsByTagName( "head" )[0].appendChild( link );
</script>

在结束head标记之前插入代码,然后在呈现页面之前加载CSS。使用外部JavaScript(.js)文件将导致显示未样式化内容FOUC的Flash

2020-04-23