Pregunta

Acabo de recibir y solucionar un problema con LightWindow e IE7 donde, al cargar la página, arroja un error de JavaScript en la línea 444 de lightwindow.js, alegando que el object does not support this property or method.A pesar de encontrar varias publicaciones en varios foros, ningún resultado de Google que pude encontrar tenía una solución, por lo que publico esto aquí con la esperanza de que ayude a alguien o a mí más adelante.

Muchos sugirieron un orden específico para los archivos de script, pero yo ya estaba usando este orden (prototipo, scriptaculous, lightwindow).

Estos son los pasos que tomé y que finalmente parecieron funcionar, los escribo aquí sólo como un registro ya que no sé ni tengo tiempo para probar cuáles específicamente "solucionaron" el problema:

  1. Se movió la llamada a lightwindow.js al final de la página.
  2. Se cambió la línea 444 a: if (this._getGalleryInfo(link.rel)) {
  3. Se cambió la línea 1157 a: if (this._getGalleryInfo(this.element.rel)) {
  4. Finalmente, adjunté (y esto es sucio, mis disculpas) las líneas 1417 a 1474 con un try/catch bloquear, tragándose la excepción.

EDITAR:

Me di cuenta de que esto rompió Firefox.Agregar lo siguiente como línea 445 ahora hace que funcione: try { gallery = this._getGalleryInfo(link.rel); } catch (e) { }

No es una solución muy buena, pero mi página (que contiene un enlace Lightwindow sin etiqueta "rel", varios enlaces Lightwindow que sí tienen etiquetas "rel" y un enlace "en línea") ahora funciona bien en IE7.Por favor comente si tiene algo que agregar sobre este problema o problemas o mejoras a mi solución dada.

¿Fue útil?

Solución

Solucioné esto cambiando la línea 444 a:

var gallery = this._getGalleryInfo(link.rel)

Luego, cambie la declaración de comparación posterior a:

if(gallery.length > 0)
{
    // Rest of code here...

...que parece haberlo ordenado en IE6+ y mantenerlo funcionando en Firefox, etc.

No cambié la línea 1157 en absoluto, pero no he leído el código para ver qué hago realmente, así que no puedo comentar sobre su relevancia.

Sospecho que?El atributo rel utilizado en el ejemplo (Evoution?[man]) puede estar causando el problema con IE, pero sin dedicar algo de tiempo a probar algunas cosas, no puedo estar seguro.

HTH.

Otros consejos

En lugar de intentar... capturar, tal vez podrías intentar usar

if( this && this._getGalleryInfo )
{
    //use the function

}

También puedes comprobarlo de la misma manera. este.elemento.rel ( if(this && this.element && this.element.rel) ...) antes de usarlo.

Parece que hay un caso en el que el _getGalleryInfo o this.element.rel aún no se ha inicializado, por lo que aún no existiría.Compruebe si existe y luego si lo uso.

Por supuesto que podría estar completamente equivocado, la única forma de saberlo es probándolo.

Tuve el mismo problema con Lightwindow 2.0, IE6, IE7, IE8 (beta);Resolví de la siguiente manera para IE6, IE7, IE8 (beta).

En lugar de:
 if(gallery = this._getGalleryInfo(link.rel))
Puse las líneas 443 y 1157:
 gallery = this._getGalleryInfo(link.rel)
 if(gallery)

¡Espero que esto ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top