NivoSlider не работает гладко на magento

Я пытаюсь реализовать nivoslider в своей установке magento. Я просто копирую и вставляю то, что находится в загруженном демонстрационном пакете (который я проверено на моем firefox и работает очень гладко) на magento. я сделал всю домашнюю работу

  • скопируйте все необходимые файлы js и css в папку скина моей темы
  • #P2# <блочная цитата>
    <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>
    
  • скопируйте html-раздел слайдера на странице magento cms

введите здесь описание изображения

  • и, наконец, добавьте jQuery(document).ready(function($) { $('#slider').nivoSlider(); }); в my_own-custom_script.js

Работает, но не плавно. Иногда слайд просто останавливался на некоторое время. В других случаях один из слайдов изображения не будет отображаться. Анимация также немного мерцает. Навигация по ползунку (кнопка «предыдущий-следующий» и кружок в нижней части ползунка) иногда перестает реагировать на мое событие щелчка. Что меня смущает, так это то, что все эти симптомы просто случаются иногда, в другой раз все проходит хорошо.

о, еще одна вещь, этот nivoslider также всегда вызывает сбой моего firefox каждый раз, когда я проверяю один из его элементов с помощью firebug.

Может ли кто-нибудь дать мне подсказку, почему это происходит? Я подозреваю, что это как-то связано с конфликтом со скриптом Magento Prototype (хотя все это уже работает в режиме без конфликтов)


person Kamal    schedule 04.01.2012    source источник
comment
Хорошо знать. Я также пытался запустить NivoSlide целевой страницы клиента вместе с jquery-плагином Snowflake, который стал смертью для старых компьютеров ^^ Тем временем я использую Orbit Slider, который является простым в использовании и быстрым слайдером jquery: zurb.com/playground/orbit-jquery-image-slider Проблема только в том, он не совместим с IE6.   -  person ThreeCheeseHigh    schedule 05.01.2012
comment
Вы должны быть в состоянии опубликовать это как ответ сейчас. Иди и сделай это.   -  person NullUserException    schedule 06.01.2012


Ответы (2)


немного покопавшись, я нашел решение... и решение очень простое: достаточно просто добавить один маленький символ подчеркивания в скрипт nivoslider. просто замените эту строку в скрипте nivoslider:

$.fn._reverse = [].reverse;

к этому

$.fn._reverse = []._reverse;

А вот пояснение для тех, кому нужно пояснение:

если вы увидите список ошибок (с firefox, ctrl+shift+j) при использовании nivoslider, вы увидите, что прототип получил слишком много рекурсии. Это объяснение «слишком большой рекурсии» Prototype: прототипировать слишком много проблем с рекурсией.

Использование функции реверса на Prototype привело к конфликту с NivoSlider. ребята из github нашли эту проблему и дают одно быстрое решение здесь: https://github.com/gilbitron/Nivo-Slider/issues/35

эта проблема свела меня с ума, потому что везде нет достаточных ресурсов (попробуйте погуглить, и вы не найдете прямого ответа на эту проблему). Поэтому я надеюсь, что мой вопрос вместе с моим собственным ответом может помочь другим людям, у которых такой же случай, как и у меня :)

person Kamal    schedule 06.01.2012
comment
отлично, спасибо, у меня была такая же проблема, и это решило ее - person Matthew Dolman; 03.02.2012
comment
У меня тоже была такая же проблема. Это решило часть со слишком большой рекурсией, но ползунок по-прежнему не работает правильно в моих установках magento. Он не реагирует на клики для смены слайдов, а анимация прерывистая. Все еще ищу полное решение. - person shanemgrey; 29.06.2012

Недавно начал видеть это на сайте, который некоторое время находился в разработке. Видя:

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

в консоли в Хроме. деталь «Object.extend.reverse» ссылается на строку прототипа 881. Я не очень хорошо разбираюсь в javascript, поэтому эта деталь лучше подходит для кого-то другого.

/skin/frontend/gas/default/js/jquery.nivo.slider.pack.js загружен в , так что это должен быть какой-то конфликт, может быть, с новой версией jQuery или что-то в этом роде.

Я полагаю, вы могли бы переключиться на другой слайдер. Недавно я нашел слайдер BX, и он мне понравился, хотя я еще не использовал его в проекте Magento, поэтому не могу говорить о совместимости, и вы все равно это исправили, так что...

person pspahn    schedule 06.01.2012