LightWindow & IE7, “Строка 444 - объект не поддерживает это свойство или метод”
-
09-06-2019 - |
Вопрос
Я только что получил и обошел проблему с LightWindow и IE7, где при загрузке страницы она выдает ошибку JavaScript в строке 444 lightwindow.js
, утверждая , что object does not support this property or method
.Несмотря на то, что я нашел различные публикации на различных форумах, ни в одном из результатов Google, которые я смог найти, не было решения, поэтому я публикую это здесь в надежде, что это поможет кому-то / мне позже.
Многие предлагали определенный порядок расположения файлов скриптов, но я уже использовал этот порядок (prototype, scriptaculous, lightwindow).
Это шаги, которые я предпринял и которые, казалось, наконец-то сработали, я записываю их здесь только в виде записи, поскольку я не знаю и у меня нет времени проверить, какие из них конкретно "исправили" проблему:
- Переместил вызов на lightwindow.js в нижнюю часть страницы.
- Изменил строку 444 на:
if (this._getGalleryInfo(link.rel)) {
- Изменил строку 1157 на:
if (this._getGalleryInfo(this.element.rel)) {
- Наконец, я приложил (и это грязно, приношу свои извинения) строки с 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)
Надеюсь, это поможет!