web-dev-qa-db-fra.com

TypeError non capturé: impossible de lire la propriété 'nodeName' de undefined

ce problème n'apparaît que dans joomla -

im essayant d'utiliser le plugin contentflow avec mon site joomla

c'est le site du plugin - http://www.jacksasylum.eu/ContentFlow/

c'est mon site - http://2-dweb.com/RND/

comme vous pouvez le voir, cela ne fonctionne pas - il reste juste pour la phase de chargement pour toujours

en y regardant de plus près, je peux voir qu'il y a un problème avec ce code:

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

};

avec la première ligne - il dit "TypeError non capturé: Impossible de lire la propriété 'nodeName' de non défini"

mais cette chose fonctionne sur mon fichier html de bureau et sur le site du plugin lui-même!

pourquoi ça ne marche pas sur mon site joomla? ce n'est pas un conflit - je n'utilise pas de conflit et j'ai d'autres plugins jquery qui fonctionnent

mettre à jour:

rob w m'a aidé avec cette erreur: "Remplacez la première ligne par if (this.content && this.content.nodeName ==" IMG ") {. Cela résout le problème"

et il l'a fait, mais maintenant une autre erreur apparaît:

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

l'erreur - UnCaught TypeError: Impossible d'appeler la méthode 'addEvent' de indéfini

17
David Nelband

Comme l'explique l'erreur "TypeError non capturé: impossible de lire la propriété 'nodeName' de indéfini" L'élément n'est pas disponible lorsque le script essaie d'y accéder. Vous pouvez résoudre ce problème de deux manières.

  • Essayez de boucler le code avec un document.
  • Vous pouvez vérifier si l'élément est disponible avant d'y accéder. Pour ce faire, utilisez une clause if.
19
Techie

Résolu cela.

J'utilise la version 3.3.7 de bootstrap.css et la version 4.0.0 de bootstrap.js.

En changeant bootstrap.js en version 3.3.7, mon problème a été résolu !!!

3
web_developer

Chargez votre script uniquement après avoir chargé tous les éléments dans DOM.

Votre script doit être appelé en bas de la page comme ceci

<html>
  <head></head>

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

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

Si vous êtes en utilisant jquery, vous pouvez inclure le fichier de script n'importe où dans votre page s'il est entouré de document.ready, comme ça:

$(document).ready(function(){

  // your code here.. 

});
1
Prasanth K C

Il est important que vous utilisiez class="content". La structure devrait être:

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

était avec cette erreur. J'ai fait la correction en laissant tous les js et css du bootstrap avec la même version. Dans mon cas, j'ai utilisé la dernière version de chacun: https://getbootstrap.com/ docs/4.4/mise en route/téléchargement /

0
Marcos Barreto