0

当使用 jquery.fancybox-1.2.6.js 进行模式弹出时,它适用于我尝试过的每个平台,除了 IE8 设置为兼容模式时。

当模态试图显示时,我在页面上收到一个 javascript“未实现”错误,使模态永远不会弹出。它给出了 jquery.fancybox-1.2.6.js 中发生错误的行号(第 207 行),其中包含以下内容

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

我用警报语句做了一些老派的事实调查,似乎 .style 有效,它是“未实现”的 removeExpression 函数。

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

4

3 回答 3

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

于 2010-02-12T20:52:55.060 回答
0

您已经发布了答案,但我认为有些事情可能值得尝试。

.style.removeExpression 是我希望不实现的。该代码可帮助 quirksmode 进行正确的尺寸调整。

所以而不是

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

尝试做

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

然后

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

宽度也一样。

我不确定尺寸设置在这里是否重要,当有很多内容并且 div 可能缩放太大时,它可能很重要。尝试大量内容,或者用萤火虫或其他东西在那里贴一张大图片:)

于 2010-02-12T21:12:31.533 回答
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;

现在,除非用于预期的浏览器之一,否则不会输入这些代码块。

于 2013-09-15T17:23:52.197 回答