LightWindow & IE7, «Строка 444 - объект не поддерживает это свойство или метод» - PullRequest
0 голосов
/ 03 сентября 2008

Я только что получил и обошел проблему с 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 , Пожалуйста, прокомментируйте, если у вас есть что добавить по поводу этой проблемы или проблем с / улучшением моего решения.

Ответы [ 3 ]

1 голос
/ 06 сентября 2008

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

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

}

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

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

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

0 голосов
/ 09 марта 2009

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

var gallery = this._getGalleryInfo(link.rel)

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

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

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

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

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

НТН.

0 голосов
/ 27 февраля 2009

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

Вместо:
if(gallery = this._getGalleryInfo(link.rel))
Я положил на линии 443 и 1157:
gallery = this._getGalleryInfo(link.rel)
if(gallery)

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

...