Magento демонстрирует конфликт jQuery друг с другомjquery


Answers

У вас есть две проблемы.

1)

Вы включаете jQuery дважды . У вас включен jquery.js (1.7.1), а также jquery-1.4.4.min.js включен далее. Это вызывает проблемы.

Найдите проект для строки «jquery-1.4.4.min.js», и вы, вероятно, найдете exntry внутри файла конфигурации XML, попробуйте комментировать это.

Возможно, два модуля добавляют jquery через конфигурацию Magento XML. Удалите одну из этих записей внутри файлов конфигурации XML-модулей, и проблемы должны исчезнуть. Я бы рекомендовал удалить jquery-1.4.4.min.js, поскольку это включено после большинства других плагинов jquery, которые вызовут еще больше проблем.

2)

jQuery.noConflict () вызывается после использования jquery. Как было предложено выше, лучший способ получить это - открыть файл jquery.js и добавить его к самому концу файла:; jQuery.noConflict ();

Question

Я довольно новичок в Magento . Я использовал скрипт романа для показа баннера. Поскольку мне приходилось показывать баннер на каждой странице, поэтому я header.phtml слайдер в файле header.phtml чтобы я мог показывать баннер на каждой странице. Поэтому в header.phtml мой код слайдера выглядит примерно так:

    <script language="javascript">
         jQuery.noConflict();
        jQuery(document).ready(function(){
          bannerRotator('#bannerRotator', 500, 5000, true);
        });
      </script>
<div id="bannerRotator">
  <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('homepageslider')->toHtml(); ?>
</div>

здесь слайдер работает хорошо, но когда я посмотрел console tab в firefox, я получил некоторые ошибки. Вот изображение ошибки консоли. Чтобы решить все проблемы, с которыми я столкнулся, я узнал, что jQuery противоречит друг другу. Поэтому, чтобы очистить, я использовал jQuery.noConflict а также удалил все $ в jQuery . Но все же у меня такая же проблема. Любая помощь и предложения будут действительно заметны. благодаря

Живой сайт можно найти здесь




Вы можете использовать этот модуль Magento: https://github.com/sotastudio/Mage.Ext.Jquery

Он просто реорганизует включение файлов JavaScript и устанавливает jQuery непосредственно в первую позицию. Кроме того, вы можете легко запустить jQuery в этом фрагменте:

(function($) {
  $(function() {
    //console.log($('body'));
  });
})(jQuery);



Основная проблема заключается в том, что вы включаете jquery перед прототипом (источник страницы просмотра)

 <script type="text/javascript" src="..../js/jquery/jquery.js"></script>
 <script type="text/javascript" src="..../js/prototype/prototype.js"></script>

Вам нужно изменить его на

 <script type="text/javascript" src=".../js/prototype/prototype.js"></script>
 <script type="text/javascript" src=".../js/jquery/jquery.js"></script>
 //best to add  jQuery noConflict right after

Чтобы установить это открытое

/design/frontend/default/[theme]/layout/page.xml

или (если jquery не найден в выше)

/app/design/frontend/default/[theme]/template/page/html/head.phtml

Ваш page.xml должен выглядеть так:

<default translate="label" module="page">
    ......
        <block type="page/html_head" name="head" as="head">
            <action method="addJs"><script>prototype/prototype.js</script></action>
            <action method="addJs"><script>lib/ccard.js</script></action>
            <action method="addJs"><script>prototype/validation.js</script></action>
            <action method="addJs"><script>scriptaculous/builder.js</script></action>
            ......
            <action method="addJs"><script>mage/translate.js</script></action>
            <action method="addJs"><script>mage/cookies.js</script></action>


            <action method="addItem"><type>skin_js</type><name>js/jquery-1.7.2.min.js</name></action>
            <action method="addItem"><type>skin_js</type><name>js/jquery.noconflict.js</name></action>
            <action method="addItem"><type>skin_js</type><name>js/jqforms/jquery.jqtransform.js</name></action>
           <!- all other jquery plugin below -->
   .....

Создайте файл jquery.noconflict.js и добавьте

 var $j = jQuery.noConflict(); // you could also add this  to the end of jquery-1.7.2.min.js

В вашем пользовательском коде jquery вы НЕ МОЖЕШЬ использовать $... больше (используйте только prototypeJs), вам нужно использовать либо $j... или jQuery...

Затем удалите

  <script src="http://modulesoft.biz:/projects/magento/extream/skin/frontend/base/default/js/jquery-1.4.4.min.js"></script>