Fancybox получает ошибку «не реализовано» в JavaScript в режиме совместимости IE8 - PullRequest
0 голосов
/ 12 февраля 2010

При выполнении модального всплывающего окна с использованием jquery.fancybox-1.2.6.js оно работает на всех платформах, которые я пробовал, кроме IE8, когда установлен режим совместимости.

Когда модал пытается отобразить, я получаю ошибку javascript «не реализовано» на странице, которая не дает модалу всплыть. Он дает номер строки (строка 207), в которой происходит ошибка в jquery.fancybox-1.2.6.js, и содержит следующее

 $("#fancy_content")[0].style.removeExpression("height");

Я выполнил поиск фактов старой школы с помощью операторов предупреждений, и кажется, что .style работает, это функция removeExpression, которая "не реализована".

Кто-нибудь смог обойти эту проблему?

Ответы [ 3 ]

1 голос
/ 12 февраля 2010

Я смог закомментировать оскорбительные части, и теперь у меня все работает нормально:

//This was causing error in IE8 in compatibility mode
//            if (oldIE || ieQuirks) {
//                $("#fancy_content")[0].style.removeExpression("height");
//                $("#fancy_content")[0].style.removeExpression("width");
//            }

            if (pad > 0) {
                width += pad * 2;
                height += pad * 2;

                $("#fancy_content").css({
                    'top': pad + 'px',
                    'right': pad + 'px',
                    'bottom': pad + 'px',
                    'left': pad + 'px',
                    'width': 'auto',
                    'height': 'auto'
                });

//This was causing error in IE8 in compatibility mode
//                if (oldIE || ieQuirks) {
//                    $("#fancy_content")[0].style.setExpression('height', '(this.parentNode.clientHeight - ' + pad * 2 + ')');
//                    $("#fancy_content")[0].style.setExpression('width', '(this.parentNode.clientWidth - ' + pad * 2 + ')');
//                }

Кажется странным, что это работает без этого, но, возможно, это не будет работать для всех, в зависимости от того, как они используют fancybox ...

0 голосов
/ 15 сентября 2013

Я знаю, что это старый вопрос, но вот мои два цента за потомство ...

Я столкнулся с той же проблемой, когда обновил свои сайты с jQuery версии 1.4.2 до 1.8.3. Кажется, проблема в том, как причудливая коробка определяется, если присутствует boxModel, через этот код:

ieQuirks = $.browser.msie && !$.boxModel;

В более новых версиях jQuery $ .boxModel возвращает undefined (устарел в 1.3), что неверно, что делает тест верным для всех браузеров. Использование $ .support.boxModel вместо $ boxModel устранило проблему для меня:

ieQuirks = $.browser.msie && !$.support.boxModel;

Теперь эти блоки кода не вводятся, если только это не для одного из предполагаемых браузеров.

0 голосов
/ 13 февраля 2010

Вы уже опубликовали ответ, но есть кое-что, что, по-моему, стоит попробовать.

.style.removeExpression - это то, что, как я ожидаю, не будет реализовано.Код здесь, чтобы помочь quirksmode сделать правильный размер.

, поэтому вместо

$("#fancy_content")[0].style.removeExpression("height");

попробуйте сделать

$("#fancy_content").height('auto') 

и позже

$("#fancy_content").height($(window).height() - pad * 2 );

то же самое с шириной.

Я не уверен, важна ли здесь настройка размеров, это может быть важно, когда контента много, а div может масштабироваться слишком сильно.Попробуйте это с большим количеством контента или вставьте туда большое изображение с помощью firebug или чего-то еще:)

...