MooTools ошибка в FireFox

Тема в разделе "JavaScript", создана пользователем vave, 22 окт 2013.

Модераторы: ZiX
  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Здравствуйте, дорогие друзья!
    Очень нуждаюсь в вашей помощи!
    Проблема следующая, установил плагин he_wall для SocialEngine 3.
    Только в FireFox, появляется ошибка:
    HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy @ http://xxxxx.xx/include/js/mootools12-min.js:1
    Всё действия связанные с JS данного плагина, также не работают только в FireFox.

    Для решения данной проблемы, пришла единственная идея - скачал MooTools Core 1.4.5 с официального сайта MooTools и заменил "mootools12-min.js" новой версией файла.

    Плагин наконец-то заработал в FireFox, но отключилась половина функций сайта, связанных с JS.

    Нашёл через Google уйму сайтов с данным плагином, и к сожалению он тоже у всех не работает в FireFox.
    Подскажите пожалуйста, что делать в данной ситуации?
     
    Последнее редактирование: 22 окт 2013
  2. krdma

    krdma Постоялец

    Регистр.:
    1 июн 2009
    Сообщения:
    89
    Симпатии:
    15
    может с jQuery конфликтует? jQuery.noConflict() в помощь. А по-хорошему, неплохо было бы увидеть сам сайт.
     
  3. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Я нашёл в чём проблема, но не знаю как её устранить.
    Вот ссылка на сайт (скопированная HTML версия)


    Проблема в данном коде:

    HTML:
    <script type="text/javascript">
    window.addEvent('domready', function(){
          var $profile_menu = $$('.profile_menu').getElement('tbody')[0];
          $profile_menu = ($profile_menu == null) ? $$('.profile_menu')[0] : $profile_menu;
         
          var $profile_menu_item = $('following_link_container').getElements('tr');
    
        if ($profile_menu == null) {
            return false;
        } 
    
        if ($profile_menu.getElements('tr').length == 0) {
            $$('.profile_menu').setStyle('margin-bottom', '10px');
        }
    
        $profile_menu.grab($profile_menu_item[0]);
    
    });
    </script>
    Но убирать его нельзя, надо как то исправить..:nezn:
     
  4. krdma

    krdma Постоялец

    Регистр.:
    1 июн 2009
    Сообщения:
    89
    Симпатии:
    15
    Погадаем по кофейной гуще) первым что в глаза бросается:
    Код:
     var $profile_menu_item = $('following_link_container').getElements('tr');
    
    может поможет
    Код:
     var $profile_menu_item = $$('following_link_container').getElements('tr');
    
    И вот такие записи мне не особо нравятся. лучше через селекторы выборку нормально сделать.
    Код:
    getElement('tbody')[0]
     
  5. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    По поводу селекторов не очень понимаю))
    А строку заменил, плагин так и не работает в FF, но ошибка поменялась, теперь:
    TypeError: Argument 1 of Node.appendChild is not an object. @ file:///C:/Users/Kasutaja/Documents/work/xxxxx/tpl/test/index_files/mootools12-min.js:1
     
  6. krdma

    krdma Постоялец

    Регистр.:
    1 июн 2009
    Сообщения:
    89
    Симпатии:
    15
    а теперь смотри в сторону he_wall и функции appendChild с аргументом, не являющимся объектом. Русским языком ищи где не подхватывается элемент.
     
  7. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    На самом деле, я немного похимичил, вывел из плагина, кнопочку на страницу профиля, и теперь из-за этой кнопочки ошибка, код выше, имеет прямое отношение к кнопочки.
    А вот и сама кнопочка
    HTML:
    <td style="margin-bottom: 10px;" class="profile_menu" id="he_following_status" nowrap="nowrap"><a><img src="./images/icons/loading2.gif" class="icon" width="20px" height="20px">Loading...</a></td>
     
  8. krdma

    krdma Постоялец

    Регистр.:
    1 июн 2009
    Сообщения:
    89
    Симпатии:
    15
    he_wall.js
    Код:
    show_loader : function( $node )
        {
            var loader = new Element('img', {
                'src' : './images/icons/he_wall_following_loader2.gif',
                'border' : 0,
                'class' : 'he_wall_following_loaders'
            });
            $node.appendChild( loader );
        },
    сделать так:
    Код:
    show_loader : function( $node ){},
     
  9. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    осталась ошибка TypeError: Argument 1 of Node.appendChild is not an object.
    Хром теперь тоже выдаёт ошибку:
    1. Uncaught TypeError: Cannot call method 'addEvent' of null he_wall.js:210
      1. he_wall.prepare_action_tabshe_wall.js:210
      2. he_wall.prepare_post_actionhe_wall.js:97
      3. he_wall.constructhe_wall.js:68
      4. (anonymous function)profile.php?user=Alexander:2756
      5. cmootools12-min.js:1
      6. (anonymous function)mootools12-min.js:1
      7. (anonymous function)mootools12-min.js:1
      8. Native.implement.fireEventmootools12-min.js:1
      9. bmootools12-min.js:1
      10. (anonymous function)mootools12-min.js:1
      11. cmootools12-min.js:1
    И перестали работать кнопочки для загрузки видео, аудио, фото(
     
    Последнее редактирование: 23 окт 2013