LightWindow & IE7, “Строка 444 - объект не поддерживает это свойство или метод”

StackOverflow https://stackoverflow.com/questions/41928

Вопрос

Я только что получил и обошел проблему с LightWindow и IE7, где при загрузке страницы она выдает ошибку JavaScript в строке 444 lightwindow.js, утверждая , что object does not support this property or method.Несмотря на то, что я нашел различные публикации на различных форумах, ни в одном из результатов Google, которые я смог найти, не было решения, поэтому я публикую это здесь в надежде, что это поможет кому-то / мне позже.

Многие предлагали определенный порядок расположения файлов скриптов, но я уже использовал этот порядок (prototype, scriptaculous, lightwindow).

Это шаги, которые я предпринял и которые, казалось, наконец-то сработали, я записываю их здесь только в виде записи, поскольку я не знаю и у меня нет времени проверить, какие из них конкретно "исправили" проблему:

  1. Переместил вызов на lightwindow.js в нижнюю часть страницы.
  2. Изменил строку 444 на: if (this._getGalleryInfo(link.rel)) {
  3. Изменил строку 1157 на: if (this._getGalleryInfo(this.element.rel)) {
  4. Наконец, я приложил (и это грязно, приношу свои извинения) строки с 1417 по 1474 с try/catch блок, проглатывающий исключение.

Редактировать:

Я понял, что это сломало Firefox.Добавление следующего в качестве строки 445 теперь заставляет это работать - try { gallery = this._getGalleryInfo(link.rel); } catch (e) { }

Это не очень приятное исправление, но моя страница (которая содержит ссылку lightwindow без тега "rel", несколько ссылок lightwindow, у которых есть теги "rel", и одну ссылку "inline") теперь отлично работает в IE7.Пожалуйста, прокомментируйте, если у вас есть что добавить по поводу этой проблемы или проблем с / улучшений к моему данному решению.

Это было полезно?

Решение

Я исправил это, изменив строку 444 на:

var gallery = this._getGalleryInfo(link.rel)

Затем измените последующий оператор сравнения на:

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

...который, похоже, отсортировал его в IE6 + и сохранил его работоспособность в Firefox и т.д.

Я вообще не менял строку 1157, но я не читал код, чтобы увидеть, что я на самом деле делаю, поэтому я не могу прокомментировать его актуальность?

Я подозреваю , что ?используемый в примере атрибут rel (Evoution?[man]) может вызывать проблему с IE, но, не потратив некоторое время на тестирование нескольких вещей, я не могу быть уверен?

ХТХ.

Другие советы

Вместо try ..catch, возможно, вы могли бы попробовать использовать

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

}

вы также можете проверить таким же образом этот.элемент.rel ( if(this && this.element && this.element.rel) ...) перед его использованием.

Похоже, есть случай, когда _getGalleryInfo или this.element.rel еще не был инициализирован, так что он еще не существовал бы.Проверьте, существует ли он, а затем, использую ли я его.

конечно, я могу совершенно ошибаться, единственный способ узнать это - протестировать.

У меня была такая же проблема с Lightwindow 2.0, IE6, IE7, IE8 (бета-версия);Я решил следующим образом для IE6, IE7, IE8 (бета-версия).

Вместо того, чтобы:
 if(gallery = this._getGalleryInfo(link.rel))
Я ввел строки 443 и 1157:
 gallery = this._getGalleryInfo(link.rel)
 if(gallery)

Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top