it-swarm-pt.tech

TypeError não capturado: Não é possível ler a propriedade 'nodeName' de undefined

esse problema aparece apenas no joomla -

estou tentando usar o plug-in contentflow com meu site joomla

este é o site do plug-in - http://www.jacksasylum.eu/ContentFlow/

este é o meu site - http://2-dweb.com/RND/

como você pode ver, ele não funciona - ele permanece na fase de carregamento para sempre

após uma inspeção mais detalhada, posso ver que há um problema com este código:

  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);
}

};

com a primeira linha - diz "TypeError não capturado: não é possível ler a propriedade 'nodeName' de indefinido"

mas isso funciona no meu arquivo html da área de trabalho e no site do plug-in!

por que não funciona no meu site joomla? não é uma coisa de conflito - eu estou usando no-conflito e eu tenho outros plugins jquery que funcionam

atualizar:

rob w me ajudou com este erro: "Altere a primeira linha para if (this.content && this.content.nodeName ==" IMG ") {. Isso resolve o problema"

e foi, mas agora outro erro aparece:

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

o erro - TypeError não detectado: não é possível chamar o método 'addEvent' de indefinido

17
David Nelband

Como o erro explica "TypeError não capturado: não é possível ler a propriedade 'nodeName' de indefinido" O elemento não está disponível quando o script tenta acessá-lo. Você pode resolver isso de duas maneiras.

  • Tente quebrar o código com um document.ready.
  • Você pode verificar se o elemento está disponível antes de acessá-lo. Para fazer isso, use uma cláusula if.
19
Techie

Resolvido isso.

Estou usando o bootstrap.css versão 3.3.7 e o bootstrap.js versão 4.0.0.

Ao alterar o bootstrap.js para a versão 3.3.7, meu problema foi resolvido !!!

3
web_developer

Carregue apenas seu script depois de carregar todos os elementos no DOM.

Seu script deve ser chamado na parte inferior da página, como este

<html>
  <head></head>

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

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

Se você estiver sando jquery, poderá incluir o arquivo de script em qualquer lugar da sua página, se estiver envolto em document.ready, como isso:

$(document).ready(function(){

  // your code here.. 

});
1
Prasanth K C

É importante que você use class="content". A estrutura deve ser:

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

estava com esse erro. Eu fiz a correção deixando todos os js e css do bootstrap com a mesma versão. No meu caso, usei a versão mais recente de cada um: https://getbootstrap.com/ docs/4.4/introdução/download /

0
Marcos Barreto