在我们的网站上,我们根据显示器是否为视网膜动态加载样式表。现在,我们在页面中插入的document.write
每一个都使用不同的 css 文件,如果显示是视网膜的话。<link href="stylesheet.css">
但是,这会损害性能,因为它会导致 css 文件同步加载,因为浏览器无法解析 javascript 以在前一个文件完成之前加载下一个文件。我相信,如果我们利用现代浏览器的提前查看和异步获取资源的能力——换句话说,如果我们并行加载 CSS 文件,我们可以减少页面加载时间。
我目前的解决方案是为每个要加载的样式表创建一个<link id="link-tag-id" href="">
标签,紧随其后的是一个确定视网膜状态的脚本,然后用适当的文件填写引号,如下所示:
document.getElementById("link-tag-id").setAttribute("href", "retina-stylesheet.css")
这似乎工作正常,当我在 Chrome 开发人员工具以及 WebPageTest.org(运行 Chrome、Firefox 和 IE)上检查网络瀑布时,样式表确实是并行加载的。但是,它似乎有点hacky。<link>
我想知道创建具有空href
属性的标签是否有任何危险,如果有,它们是什么?
更广泛地说,关于如何动态和异步加载 CSS 是否有任何其他建议?
谢谢你的帮助!
编辑:我刚刚发现这也有效:
document.getElementById("link-tag-id").href = "retina-stylesheet.css"