谷歌CDN Jquery加载不起作用

时间:2011-06-27 23:49:29

标签: javascript ruby-on-rails google-cdn

我目前在我的某个布局中有一系列单独的javascript文件,我正在尝试使用Google CDN清理它。

现状(我知道可怕):

...css...  
<%= yield :head %>

<%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" %>
<script type="text/javascript" src="http://cdn.jquerytools.org/1.2.5/all/jquery.tools.min.js"></script>
<%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js" %>
<%= javascript_include_tag "ui/jquery.ui.core", "ui/jquery.effects.core",
   "ui/jquery.effects.highlight", "ui/jquery.ui.widget", "ui/jquery.ui.tabs",
   "ui/jquery.ui.progressbar" %>
<%= javascript_include_tag "jquery.ui.stars.min", "application", "rails" %>

我尝试用下面的标签替换第二个标签(带有长文件列表):

<%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js" %>

我对此没有好运 - 似乎谷歌文件根本就不存在(我查看了我的页面源并且已加载)。我在这里做错了什么?

2 个答案:

答案 0 :(得分:4)

我不知道如何将其翻译成RAILS,但这个简单的HTML应该可以解决问题。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
    if(typeof jQuery == 'undefined') {
        //<![CDATA[
        document.write("<script src='/includes/jquery-1.4.2.min.js' type='text/javascript'><\/script>");
        //]]>
    }
</script>

这将假设您的jQuery文件存储在/includes/jquery-1.4.2.min.js上 在Google的CDN失败时,将获取本地副本。

答案 1 :(得分:3)

很抱歉疏通了一个旧帖子,但我不确定这个问题是否真的得到了解答。

我遇到了类似的问题,解决方案实际上非常简单:我没有包含CSS。你也可以通过谷歌的CDN这样做:

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css" media="screen" rel="stylesheet" type="text/css" />

<%= stylesheet_link_tag 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css' %>

显然这是为了ui-lightness主题; CDN上还有其他主题(尽管不是全部)。我相信你可以通过谷歌快速搜索找到那些。