我已完成以下操作,以在Magento中包含来自Google CDN的jQuery:
<default>
<reference name="head">
<block type="core/text" name="google.cdn.jquery">
<action method="setText">
<text><![CDATA[<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]>
</text>
</action>
</block>
</reference>
</default>
但是,当我想通过本地后备实现(效果很好)来实现时,我最终将其添加到.phtml中,如下所示:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
if (!window.jQuery) {
document.write('<script src="/path/to/your/jquery"><\/script>');
}
</script>
- 是否有一个更优雅的这样的方式在local.xml中,而不是推回退入
<text>
节点,因为我有做的jQuery.noConflict
?
编辑:
提请注意问题的另一部分-是否有包含jQuery的社区模块适合您?如果他们有本地jQuery,那就很好-如果他们使用Google CDN-甚至更好。如果不存在,我很乐意创建一个。
- 是否有任何扩展插件可以处理此问题,而无需我自己引导它?
1
一个非常简单的社区模块,其中包括JQuery(半自我链接):github.com/netz98/N98_BaseJQuery-它仅包含本地JQuery。通过CDN的想法很好,可以通过Pull Requests :-)随时加以改进
—
Alex
出于好奇:CDN是否不可靠?为什么需要回退?您在那里有什么样的实践经验?
—
亚历克斯
一些国家(伊朗,叙利亚等)可能有时会阻止Google和Google CDN。这是我的亲身经历。我还看到了缓解响应超时等问题。
—
philwinkle
了解。因此,如果您可以为该模块提供解决方案,那就太酷了。
—
亚历克斯
很棒的发现-寻找合适的东西时我没有看到N98模块。我想我会在那里做。谢谢!但是,可能必须采用上述
—
philwinkle
<text>
方法...不确定是否可以接受。我认为n98模块使用一个单独的js包含文件来调用noConflict ...