NivoSlider在magento上运行不顺畅

时间:2012-01-04 09:37:14

标签: javascript jquery magento nivo-slider

我正在尝试在我的magento安装上实现nivoslider。我只是将downloaded demo package中的内容(我已经在我的Firefox上测试并运行得很顺利)复制到magento上。我做了所有的家庭作业

  • 将所有必需的js和css文件复制到我主题的皮肤文件夹
  • 在page.xml上添加这些文件

    <reference name="head">
      <action method="addCss"><stylesheet>css/styles.css</stylesheet></action>
      ...
      <action method="addCss"><stylesheet>css/nivo-slider.css</stylesheet></action>
      <action method="addCss"><stylesheet>css/themes/default/default.css</stylesheet></action>
      <action method="addCss"><stylesheet>css/themes/default/pascal.css</stylesheet></action>
      <action method="addCss"><stylesheet>css/themes/default/orman.css</stylesheet></action>
      <action method="addItem"><type>skin_js</type><name>js/jquery-1.6.2-no-conflict.js</name><params/></action>
      ...
      <action method="addItem"><type>skin_js</type><name>js/jquery.nivo.slider.pack.js</name><params/></action>
      <action method="addItem"><type>skin_js</type><name>js/my_own_custom_script.js</name><params/></action>
      ...
    </reference>
    
  • 复制magento cms页面上的滑块html部分

enter image description here

  • 最后将jQuery(document).ready(function($) { $('#slider').nivoSlider(); });添加到my_own-custom_script.js

它运行但不顺利。有时幻灯片暂停了一段时间。其他时候,其中一张图片幻灯片不会显示出来。动画也有点闪烁。滑块导航(上一个下一个按钮和滑块底部的圆圈)有时会在我的点击事件中无响应。让我感到困惑的是,所有这些症状都发生在有时,有些时候它运行良好。

哦,还有一件事,这个nivoslider每次我用firebug检查它的一个元素时也会让我的firefox崩溃。

有人能给我一些线索吗,为什么会这样?我怀疑这与magento的Prototype脚本的冲突有关(尽管它已经在noconflict模式下运行)

2 个答案:

答案 0 :(得分:21)

经过一番挖掘后,我找到了解决方案......解决方案非常简单: 就像在nivoslider脚本中添加一个小的下划线字符一样简单。 只需在nivoslider脚本上替换这一行:

$.fn._reverse = [].reverse;

到这个

$.fn._reverse = []._reverse;

以下是需要解释的人的解释:

如果你在使用nivoslider时看到错误列表(使用firefox,ctrl + shift + j),你会发现原型得到了太多的递归。这就是对#34;过多递归的解释&#34;原型:prototype too much recursion problem

在Prototype上使用反向函数已经与NivoSlider发生冲突。 github上的人发现了这个问题,并给出了一个快速解决方案: https://github.com/gilbitron/Nivo-Slider/issues/35

这个问题让我感到疯狂,因为到处都没有足够的资源(尝试google它,你找不到这个问题的直接答案)。所以我希望我的问题,以及我自己的答案可以帮助其他人与我同样的情况:)

答案 1 :(得分:0)

最近开始在一个已经开发了一段时间的网站上看到这个。看到:

Uncaught RangeError: Maximum call stack size exceeded
Object.extend.reverse

在Chrome控制台中。 'Object.extend.reverse'细节引用原型行881.我不是一个javascript人,所以这是一个更适合其他人的细节。

/skin/frontend/gas/default/js/jquery.nivo.slider.pack.js已加载,因此它可能会有一些冲突,可能是新的jQuery版本或其他东西。

我想你可以切换到另一个滑块。我最近发现BX滑块并且喜欢它,虽然还没有在Magento项目中使用它,所以不能说兼容性而且你已经修复了它,所以...