动态异步加载CSS(通过在Javascript中设置“href”属性)
Dynamically and asynchronously loading CSS (by setting the "href" attribute in Javascript)
在我们的网站上,我们根据显示器是否为视网膜动态加载样式表。现在,我们为页面中插入的每个<link href="stylesheet.css">
使用document.write
,如果显示为retina,则使用不同的css文件。
然而,这会影响性能,因为它会导致css文件同步加载,因为浏览器无法解析javascript以在上一个文件完成之前加载下一个文件。我相信,如果我们利用现代浏览器的前瞻性和异步获取资源的能力,换句话说,如果我们并行加载CSS文件,我们可以减少页面加载时间。
我目前的解决方案是为要加载的每个样式表创建一个<link id="link-tag-id" href="">
标记,紧接着是一个确定retina状态的脚本,然后用适当的文件填充引号,如下所示:
document.getElementById("link-tag-id").setAttribute("href", "retina-stylesheet.css")
这似乎很好,当我在Chrome开发工具以及WebPageTest.org(运行Chrome、Firefox和IE)上检查网络瀑布时,样式表确实是并行加载的。然而,这似乎有点让人恼火。我想知道创建一个具有空href
属性的<link>
标签是否有任何危险,如果有,它们是什么?
更广泛地说,关于如何动态和异步加载CSS,还有其他建议吗?
谢谢你的帮助!
编辑:我刚刚发现这个也有效:
document.getElementById("link-tag-id").href = "retina-stylesheet.css"
您可以在样式表中使用媒体查询来确定显示是否为retina显示,然后加载所需的CSS。
http://css-tricks.com/snippets/css/retina-display-media-query/
http://mobile.smashingmagazine.com/2010/07/19/how-to-use-css3-media-queries-to-create-a-mobile-version-of-your-website/
- 如何将href设置为不同的值
- 设置location.href在<a>点击
- 测试iFrame的位置.href是在jasmine单元测试中设置的
- href属性在页面加载后拒绝重新设置
- 使用JQuery从包含A href值中设置*all*IMG-src值
- 动态设置 href 标记
- 如何使用 javascript 函数设置 href 参数值
- 为什么在以下场景中没有设置 href 属性
- 如何使用带有 CI 的 jquery 设置 href 模态
- 动态异步加载CSS(通过在Javascript中设置“href”属性)
- Knockoutjs函数,用参数设置href url
- 动态设置“href”元素
- 英特尔 XDK:在精灵按钮中设置 href
- Jquery获取/设置href协议
- 如何从页面URL设置href值
- 在内容占位符内设置href
- 如何同时设置href和title属性并给它一个回调函数
- 在点击时设置href值为javascript变量
- 无法动态设置href属性
- 如何通过javascript在运行时设置href值