【问题标题】:How to check whether a Jquery UI theme is loaded?如何检查是否加载了 Jquery UI 主题?
【发布时间】:2012-05-18 05:07:02
【问题描述】:

最佳实践要求我的网站严重依赖 Jquery,而 JQuery UI 源自 Google 的 CDN,应该有一个备用方案,以防 CDN 由于某种原因失败。

我的问题是,我该如何针对给定的主题执行此操作?如果重要的话,我使用的是 Redmond 主题。

目前我打算使用类似的代码:

 if(!jquery){//load local file instead; }
    else if(!jquery.ui){//load local file instead; }

但如果可能的话,我也希望从 Google 加载主题文件。

有什么想法吗? :)

【问题讨论】:

  • 不可以在你的服务器上发布jquery、jquery ui和主题文件吗?
  • @hkutluay 是的,这是可能的,但是通过提供来自 Google 的 CDN(最流行的 afaik)的常见资产,它可以被缓存,因此许多用户已经拥有它,而不必下载它。缺点是依赖于 CDN,这是我正在尝试处理的主题文件。

标签: jquery jquery-ui themes


【解决方案1】:

使用http://yepnopejs.com/

它是一个资源加载器,也适用于 CSS 文件。试试看,这个例子在他们的网页上。

这也是一个重复的问题:

How to fallback to local stylesheet (not script) if CDN fails

【讨论】:

  • 这太好了,非常感谢。我的主题在技术上是一个 CSS 文件,所以这应该是一个不错的选择。为重复的问题道歉,没有发现那个搜索。为答案喝彩! :)
【解决方案2】:
if (typeof jQuery=='undefined') { //check if jQuery is loaded
    console.log('no jQuery');
}else{ //if jQuery loaded
    if (typeof jQuery.ui=='undefined') { //check if jQuery UI is loaded
        console.log('no jQuery UI');
    }
}

这是FIDDLE,切换左侧的库并检查控制台。

您需要一个时间间隔和一个超时来为库提供合理的加载时间。 如果在几秒钟内未加载,请包含您自己的文件,或替换 src 属性以使用另一个 CDN。 查看 Google 的分析代码或 Facebook 的插件等,了解如何在 head 部分插入新的脚本标签。

【讨论】:

  • 谢谢,但这并不是我想要的。我正在寻找一种方法来测试正在加载的自定义 jquery ui 主题。我知道 jQuery 和 jQuery UI 的方法,但我目前也依赖于主题的 CDN,如果没有后备,这并不理想。
  • 查看主题的源代码,找到一些具有唯一名称的函数,并检查它是否已定义,就像上面的 typeof 一样。
  • 对不起,如果我不清楚 - jQuery UI 主题只是 .css 文件。对不起,我应该指定的。不过谢谢你! :)
  • 然后只检查特定的样式
【解决方案3】:

您可以包含 CDN 引用,测试关键对象,如果它未定义,则:

1) 在您的服务器上托管文件(脚本和样式)并在 CDN 无法加载您的文件时回退到这些文件。

2) ** 推荐 ** 使用现有的 CDN(亚马逊易于使用),如果 google cdn 无法正确加载,则回退到这些文件。

【讨论】:

  • 这基本上是我打算做的。我只是不确定如何测试我的主题失败。使用后备 CDN 而不是本地 CDN 可能是个好主意,因为两者不太可能同时出现故障,并且仍然有可能被缓存。但我仍然不确定如何测试我的主题是否正在加载。
  • 该问题涉及如何检测 css 文件。
猜你喜欢
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 2012-07-29
  • 2011-11-12
  • 1970-01-01
  • 2014-09-26
相关资源
最近更新 更多