我正在加载只在启用javascript时才需要的样式表。更重要的是,如果禁用JavaScript,则必须不存在。我在加载任何javascript库之前尽快(在头脑中)这样做。 (我尽可能晚地加载所有脚本)。外部加载此样式表的代码很简单,如下所示:
var el = document.createElement('link');
el.setAttribute('href','/css/noscript.css');
el.setAttribute('rel','stylesheet');
el.setAttribute('type','text/css');
document.documentElement.firstChild.appendChild(el);
它工作正常,但目前包含的所有CSS文件都是:
.noscript {
display: none;
}
这并不能保证加载文件,因此我想在JavaScript中动态定义规则。 最佳做法是什么?。快速扫描各种技术表明它需要相当多的跨浏览器黑客攻击。
P.S。 pleeease不发布jQuery示例。这必须在没有库的情况下完成。
答案 0 :(得分:1)
嗯。如果节省几个字节的带宽不是问题,为什么不加载所有样式表,而是在JavaScript中为具有特定类的所有类添加前缀:
body.hasjs a { color: blue }
body.hasjs div.contactform { width: xyz; }
没有那个班级为身体服务
<body>
并添加一个添加类名的小型JavaScript,如:
body.onload = function() {
document.body.className = "hasjs";
}
为了更早地完成切换过程,您可以查看一个本机Javascript onDOMLoad解决方案。