使用jquery.fancybox-1.2.6.js进行模式弹出时,除了IE8设置为兼容模式外,它在我尝试的每个平台上都有效。
当模态尝试显示时,我在页面上出现javascript“未实现”错误,导致模式不再弹出。它给出了jquery.fancybox-1.2.6.js中出现错误的行号(第207行),其中包含以下内容
$("#fancy_content")[0].style.removeExpression("height");
我做了一些旧的学校事实调查与警告声明,似乎.style工作,它是“未实现”的removeExpression函数。
任何人都能解决这个问题吗?
答案 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;
现在,除非是针对其中一个目标浏览器,否则不会输入这些代码块。