Fancybox在IE8兼容模式下获取javascript“未实现”错误

时间:2010-02-12 17:53:38

标签: javascript jquery internet-explorer-8 fancybox compatibility-mode

使用jquery.fancybox-1.2.6.js进行模式弹出时,除了IE8设置为兼容模式外,它在我尝试的每个平台上都有效。

当模态尝试显示时,我在页面上出现javascript“未实现”错误,导致模式不再弹出。它给出了jquery.fancybox-1.2.6.js中出现错误的行号(第207行),其中包含以下内容

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

我做了一些旧的学校事实调查与警告声明,似乎.style工作,它是“未实现”的removeExpression函数。

任何人都能解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

我能够对有问题的部分进行评论,现在它似乎对我有用:

//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 ......

答案 1 :(得分:0)

你已经发布了答案,但我觉得有些事情值得一试。

.style.removeExpression是我期望没有实现的。 代码可以帮助quirksmode做正确的大小调整。

所以而不是

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

尝试做

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

以后

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

与宽度相同。

我不确定尺寸设置在这里是否重要,当有很多内容并且div可能扩展得太大时,它可能很重要。尝试使用大量内容或使用firebug或其他东西粘贴大图像。)

答案 2 :(得分:0)

我知道这是一个古老的问题,但这是我后代的两分钱......

当我将我的网站从jQuery版本1.4.2升级到1.8.3时,我遇到了同样的问题。 问题似乎在于如何通过以下代码确定boxModel是否存在花式框:

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

在较新版本的jQuery中,$ .boxModel返回undefined(在1.3中已弃用),这是假的,使得测试对所有浏览器都返回true。使用$ .support.boxModel而不是$ boxModel为我解决了这个问题:

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

现在,除非是针对其中一个目标浏览器,否则不会输入这些代码块。