我有一个从Google Web Fonts加载CSS和字体的网站。但是,将使用该站点的一个地方是本地Intranet,无法访问Internet。
我仍然希望使用Google提供的字体来获取Google提供的好处,例如从CDN下载的字体,以及可能已经在用户计算机上缓存访问使用它们的其他网站。< / p>
我也使用Google-hosted jQuery,如果无法访问Google,我会使用以下代码(来自HTML5 Boilerplate)从我的服务器加载jQuery:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.0.min.js"><\/script>')</script>
我正在寻找一种方法来为CSS文件做同样的事情。
我过去曾使用<img src="..." onerror="..." />
来处理无法加载的图片,因此我想知道是否可以将其用于不加载的样式表。我在几个浏览器中使用<link href="..." onerror="..." rel="stylesheet" type="text/css" />
进行了快速测试,并在所有浏览器中执行了onerror
,但我想知道是否可以在所有浏览器中始终如一地使用它。 或者有更好的方法吗?
我在这里看到了其他几个讨论观看document.styleSheets
集合的答案,但这听起来更像是一个黑客攻击。
注意:这实际上更像是“这是否实用,人们是否使用它” - 问题而不是“规范对此有何看法” - 问题。
答案 0 :(得分:6)
我相信supported events on <script>
and <link>
at pieisgood的列表正是您所寻找的。 p>
正如您所看到的, onload 是<link>
最广泛支持的,它在工作事件中非常缺乏。但是你可以尝试通过 onload clearTimeout
来实现一个错误事件,这个函数假设发生了错误。
答案 1 :(得分:0)
<link>
,<style>
和<script>
都支持onerror
属性,适用于大多数现代/流行的浏览器。
<link>
的一个小警告是,当href URI被破坏或者链接样式表中的任何@import
URI被破坏时,它将触发onerror事件。
我发现触发onerror
<style>
事件的唯一方法是使用@import
。
损坏的@font-face
似乎没有触发任何一个标记的事件。