2012-02-20 38 views
10

este problema sólo aparece en Joomla -TypeError no detectada: No se puede leer la propiedad 'nombreNodo' de la indefinida

im tratando de usar el plugin contentflow con mi sitio joomla

este es el sitio plug-in - http://www.jacksasylum.eu/ContentFlow/

este es mi sitio - http://2-dweb.com/RND/

como se puede ver que no funciona - sólo se queda en la fase de carga siempre

una inspección más cercana, puedo ver que hay un problema con 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); 
} 

}; 

con la primera línea - que dice "TypeError no detectada: No se puede leer la propiedad 'nombreNodo' de la indefinida"

pero esto ¡Lo que funciona en mi archivo html de escritorio y en el sitio de complementos en sí mismo!

¿por qué no funciona en mi sitio joomla? no es una cosa conflicto - im utilizando sin conflictos y tengo otros plugins jQuery que trabajan

actualización:

robar w me ayudó con este error: "Cambie la primera línea a si (this.content . & & this.content.nodeName == "IMG") {que resuelve el problema"

y así fue, pero ahora aparece otro error:

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

el error - UnEdge TypeError: no se puede llamar al método 'addEvent' de undefined

+0

Cambie la primera línea a 'if (this.content && this.content.nodeName == "IMG") {'. Eso resuelve el problema. –

+0

bien, corrigió un problema, pero ahora en este código hay un problema: initClick: function() { var cItem = this.clickItem; this [this._activeElement] .addEvent ('click', cItem, false); } dice: "UnEdge TypeError: no se puede llamar al método 'addEvent' de undefined" –

+0

Se encontró un problema idéntico cuando se intentaba usar con Rails (3.2.15): se aplica incluso al usar la gema 'contentflow'. –

Respuesta

9

Como el error explica "UnEdge TypeError: no se puede leer la propiedad 'nodeName' de undefined" El elemento no está disponible cuando el script intenta acceder a él. Puedes resolver esto de dos maneras.

  • Intente ajustar el código con un document.ready.
  • Puede verificar si el elemento está disponible antes de acceder a él. Para hacer esto, usa una cláusula if.
+0

Creo que el JS en el archivo puede que ya haya sido envuelto en 'document.ready', pero definitivamente lo verificaré. –

+0

Parece que no es eso. Pensé que podría ser con las ataduras, pero eso no parece tener ningún efecto. –

1

Cargue su secuencia de comandos solo después de cargar todos los elementos en DOM.

Su script debe ser llamado en la parte inferior de la página como esta

<html> 
    <head></head> 

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

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

Si usted es usando jQuery, puede incluir el archivo de secuencia de comandos en cualquier parte de su página si se envuelve en document.ready, como esto:

$(document).ready(function(){ 

    // your code here.. 

}); 
1

Es importante que use class="content". La estructura debe ser:

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