【发布时间】:2009-07-24 17:37:36
【问题描述】:
我最近从 HTML 切换到 XHTML...不要让我开始讨论“为什么”——我们只是说这不是一个选项。随便...
当我是 HTML 时,这个函数在 IE 和 FF 中运行良好,但现在使用 XHTML 我在 FF 中得到以下错误:
heightElement is undefined
现在这是我定义 heightElement
的语句function revBars(isEFBOutput, isIXPPreview) {
if (!isIXPPreview) isIXPPreview = false;
var heightElement =
$('<div id="resizeDetectingElement" style="position:absolute; left:-9999999px height:1em;"> </div>')
.prependTo('body')
.get(0);
heightElement.currentHeight = heightElement.offsetHeight; // FireBug says the error is here.
insert();
window.onresize = refresh;
setInterval(
function() {
if (heightElement.currentHeight != heightElement.offsetHeight) {
heightElement.currentHeight = heightElement.offsetHeight; refresh();
}
}, 500);
function insert() {
var px = "px";
var color = (document.styleSheets[0].href.match("ftidStyleDay")) ? "black" : "white";
$revMarks = $('.RevMark').removeClass('RevMark').addClass('UnMarked');
if (!$revMarks.length) $revMarks = $('.UnMarked');
$revMarks.each(function() {
$('<div class="RevBar" />').css({
'background-color': color,
'width': '2px', 'position': 'absolute',
'left': (isEFBOutput && !isIXPPreview ? '.25em' : '-.75em'),
'height': this.offsetHeight,
'top': offset(this) + px
}).prependTo('body');
});
}
function refresh() { $('.RevBar').remove(); insert(); }
function offset(obj) {
var top = 0;
if (obj.offsetParent) {
do {
top += obj.offsetTop;
} while (obj = obj.offsetParent);
}
if (document.all && (!isEFBOutput || (isEFBOutput && isIXPPreview))) top -= 15;
return top;
}
}
任何想法为什么这会在 FF 中的 XHTML 中引发错误?它在 IE 中仍然有效。
编辑:同样,这段代码在 FF 和 IE 中完美运行,直到我切换到 XHTML。 Firefox 仍然为 XHTML 创建 DOM,对吧?
【问题讨论】:
-
对我来说没有错误。你什么时候打电话给这个?
-
您不会尝试在该范围/功能之外使用 heightElement,是吗?
-
错误在哪里产生?您是否尝试在其所在范围之外使用 heightElement?如果是范围界定问题,则与使用 xhtml 无关——您是否同时进行了其他更改?
-
我们能看到“(更多的东西...)”吗??
-
@J-P:问一下,你就会被我写得不好的代码淹没。 ;-)
标签: javascript jquery firefox xhtml