【问题标题】:what to do when more than one Magento extensions include Jquery library当多个 Magento 扩展包含 Jquery 库时该怎么办
【发布时间】:2013-05-03 19:33:20
【问题描述】:

我阅读了如何正确地将 jquery 包含到 magento 的指南

  1. 包含库
  2. 包括无冲突脚本
  3. 转到jquery调用的$并将其更改为jquery

使用一个扩展程序非常容易。但是,就我而言,我安装了 3 个不同的扩展,并且它们都希望包含 Jquery。当然,我不想复制这个库并调用它 3 次。起初,我想我可以在<head> 标记的第一行手动包含 jquery 库,并删除 3 个扩展中的所有 jquery 包含。但它不起作用,通常只有其中一个起作用。如果我允许所有 3 个扩展都包含 jquery,那么它们都可以工作。如何使商店中的所有 jquery 扩展都工作,而只包含一次 libray?

有人建议我应该在<head> 的顶部包含所有依赖于jquery 的脚本,对吗?但是,问题是我不知道如何在 Magento 中使用动作addJsaddItem 来安排脚本。 <block>中没有类似before或after的参数?

【问题讨论】:

  • 最好的方法是在头部包含一个 jquery 库并让插件使用该库,但是插件可能已经过时并且不能与较新版本的 jQuery 一起使用,所以你'要么需要更新插件,要么包含多个版本的 jQuery。
  • 包含的 jQuery 库有可能相互冲突,导致只有一个扩展具有“正确”的 jQuery 库可用。 (例如,Magento Enterprise 版中包含的库是 jQuery 1.3.2 —— 尝试同时加载它和 jQuery 1.9.x 都无法正常工作。)

标签: javascript jquery magento


【解决方案1】:

如果您想强制 addJs 方法中包含的 Javascript 的加载顺序,最简单的方法是使用 <params> 标记提供名称,例如:

<action method="addJs"> <!-- Loads second -->
    <script>vendor/jquery-1.6.2.min.js</script>
    <params><![CDATA[name="jquery2"]]></params>
</action>

<action method="addJs"> <!-- Loads first -->
    <script>vendor/jquery-1.8.2.min.js</script>
    <params><![CDATA[name="jquery1"]]></params>
</action>

Magento 将根据提供的名称按字母升序加载 Javascript 文件。

不过,在你的情况下,找出为什么扩展和各种 jQuery 文件不能很好地相互配合可能会更有成效。

  • 是否每个扩展都依赖于特定版本的 jQuery?
  • 他们是否使用不同的无冲突方法(即,一种使用直接调用jQuery.noConflict(),另一种使用类似var $j = jQuery.noConflict())?
  • 它们是否都使用相同的全局变量名?

【讨论】:

  • 这可以用 addItem 完成吗?我想把 js 放在我的皮肤里(可以这么说!)。
  • aha-似乎 addJS ahs type possibity 这是对 Magento 添加 js / css magezen.com/magento-sort-css-and-js-load-order的方式的更完整的解释@
猜你喜欢
  • 2014-12-06
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多