这是一种“老派”的做法,希望它能在所有浏览器上运行。理论上,你可以用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将CSS链接注入head基于URL的文件名部分的
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 );
在结束前插入代码head标记和CSS将在呈现页面之前加载。使用外部JavaScript(.js)文件将导致非样式内容的Flash(FOUC)出现。