Uncaught TypeError: Не удается прочитать свойство 'nodeName' из undefined

эта проблема появляется только в joomla -

im пытается использовать плагин contentflow с моим сайтом joomla

это сайт плагина - http://www.jacksasylum.eu/ContentFlow/

это мой сайт - http://2-dweb.com/RND/

поскольку вы можете видеть, что он не работает - он просто остается на этапе загрузки навсегда

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

  if (this.content.nodeName == "IMG") {
    CFobj._imagesToLoad++;

    var foobar = function () { 
        CFobj._imagesToLoad--;
        this.image = this.content;
        this.setImageFormat(this.image);
        if ( CFobj.conf.reflectionHeight > 0) {
            this.addReflection();
        }
        this.initClick();
        CFobj._addItemCueProcess(true);
    }.bind(this);

    if (this.content.complete && this.content.width > 0)
        window.setTimeout(foobar, 100);
    else if (this.Browser.IE && !this.content.onload) {
        var self = this;
        var t = window.setInterval( function () {
            if (self.content.complete && self.content.width > 0) {
                window.clearInterval(t);
                foobar();
            }
        }, 10);
    }
    else
        this.content.onload = window.setTimeout(foobar, 100);
}
else {
    this.initClick();
    CFobj._addItemCueProcess(true);
}

};

с первой строкой - он говорит: "Uncaught TypeError: невозможно прочитать свойство" nodeName "из undefined"

но эта вещь работает на моем рабочем столе html файле и на сайте плагина он сам!

почему он не работает на моем сайте joomla? это не конфликтная вещь - я использую без конфликтов, и у меня есть другие плагины jquery, которые работают

обновление:

rob w помог мне с этой ошибкой: "Измените первую строку на if (this.content && this.content.nodeName ==" IMG ") {. Это решает проблему"

и это произошло, но теперь появляется еще одна ошибка:

  initClick: function () {
        var cItem = this.clickItem;
        this[this._activeElement].addEvent('click', cItem, false);
    },

ошибка - Uncaught TypeError: не удается вызвать метод 'addEvent' из undefined

Ответ 1

Как объясняется ошибка "Uncaught TypeError: невозможно прочитать свойство" nodeName "из undefined" Этот элемент недоступен, когда script пытается получить к нему доступ. Вы можете решить это двумя способами.

  • Попробуйте обернуть код с помощью document.ready.
  • Вы можете проверить, доступен ли элемент перед его доступом. Чтобы сделать это, используйте предложение if.

Ответ 2

Загрузите script только после загрузки всех элементов в DOM.

Ваш script должен быть вызван в нижней части страницы, как этот

<html>
  <head></head>

  <body>
    <!--HTML Elements here-->

    <script type="text/javascript" src="yourScript.js"></script>
  </body>
</html>

Если вы используете jquery, вы можете включить файл script в любом месте вашей страницы, если он завернут в document.ready, например:

$(document).ready(function(){

  // your code here.. 

});

Ответ 3

Важно, чтобы вы использовали class="content". Структура должна быть:

 <div class="ContentFlow" id="cover-menu">
        <div class="flow">
            <div class="item" >
                <div class="content">
                   //your stuff
                </div>
            </div>
        </div>
 </div>