2011-06-27 65 views
2

我目前在我的一个布局中有一个单独的javascript文件的丑陋阵列,我试图使用Google CDN进行清理。谷歌CDN Jquery加载不起作用

当前状态(可怕的,我知道):

...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" %> 

我没有得到运气 - 看起来好像谷歌文件根本不存在(我检查了我的页面源代码并且它被加载)。我在这里做错了什么?

回答

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失败时,本地副本将被抓取。

+0

感谢您的回答。我注意到正在提取Google Jquery-UI文件,但由于某种原因,我的文档就好像不在那里一样。像UI标签,UI进度栏等行为就像他们迷路了。 – sscirrus

+0

@sscirrus你可以做的最好的事情就是使用本地系统上的所有文件运行你的应用程序。然后,慢慢将它们传递给CDN。从jQuery main开始,然后转到UI,然后转到插件并查看它是如何实现的。你可能会在这个过程中发现bug ...... – Frankie

+0

一个小小的评论,而不是指定协议部分......以“//ajax.googleapis.com/...”开始,就像同样的协议因为该页面已被使用(http/https)。 – Tracker1

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的亮度主题; CDN还有其他主题(尽管不是全部)。我相信你可以通过Google搜索快速找到这些人。