Pergunta

Acabei de receber e contornar um problema com LightWindow e IE7 onde, no carregamento da página, gera um erro de JavaScript na linha 444 do lightwindow.js, alegando que object does not support this property or method.Apesar de encontrar várias postagens em vários fóruns, nenhum resultado do Google que encontrei tinha uma solução, por isso estou postando isso aqui na esperança de que isso ajude alguém/a mim mesmo mais tarde.

Muitos sugeriram uma ordem específica dos arquivos de script mas eu já estava usando essa ordem (prototype, scriptaculous, lightwindow).

Estas são as etapas que executei e que finalmente pareceram funcionar, escrevo-as aqui apenas como um registro, pois não sei nem tenho tempo para testar quais delas "corrigiram" especificamente o problema:

  1. Movida a chamada para lightwindow.js para a parte inferior da página.
  2. Linha 444 alterada para: if (this._getGalleryInfo(link.rel)) {
  3. Linha 1157 alterada para: if (this._getGalleryInfo(this.element.rel)) {
  4. Finalmente, anexei (e isso é sujo, peço desculpas) as linhas 1417 a 1474 com um try/catch bloquear, engolindo a exceção.

EDITAR:

Percebi que isso quebrou o Firefox.Adicionar o seguinte como linha 445 agora faz com que funcione - try { gallery = this._getGalleryInfo(link.rel); } catch (e) { }

Não é uma solução muito boa, mas minha página (que contém um link lightwindow sem tag "rel", vários links lightwindow que possuem tags "rel" e um link "inline") funciona perfeitamente no IE7 agora.Por favor, comente se você tem algo a acrescentar sobre este problema ou problemas/melhorias na minha solução fornecida.

Foi útil?

Solução

Corrigi isso alterando a linha 444 para:

var gallery = this._getGalleryInfo(link.rel)

Em seguida, alterando a instrução de comparação subsequente para:

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

... que parece ter resolvido no IE6 + e mantido funcionando no Firefox etc.

Não alterei a linha 1157, mas não li o código para ver o que realmente faço, então não posso comentar sobre sua relevância.

Eu suspeito que o?usado no exemplo, o atributo rel (Evoution?[man]) pode estar causando o problema com o IE, mas sem gastar algum tempo testando algumas coisas, não tenho certeza.

HTH.

Outras dicas

Em vez de try..catch talvez você possa tentar usar

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

}

você também pode verificar da mesma maneira este.elemento.rel ( if(this && this.element && this.element.rel) ...) antes de usá-lo.

Parece que há um caso em que o _getGalleryInfo ou this.element.rel ainda não foi inicializado, portanto ainda não existiria.Verifique se existe e se eu o uso.

claro que posso estar completamente errado, a única maneira de saber é testando.

Tive o mesmo problema com Lightwindow 2.0, IE6, IE7, IE8 (beta);Resolvi da seguinte forma para IE6, IE7, IE8 (beta).

Em vez de:
 if(gallery = this._getGalleryInfo(link.rel))
Coloquei nas linhas 443 e 1157:
 gallery = this._getGalleryInfo(link.rel)
 if(gallery)

Espero que isso ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top