0

在我的 XLST 中,我们使用“vanilla”javascript 来操作报告中的一些 div。其中一个高于屏幕中心的所有其他内容,当页面加载时我这样称呼它:

var overlayObj = document.getElementById('theoverlay');
overlayObj.style.left = Math.max(0, ((window.innerWidth - overlayObj.offsetWidth) / 2) + window.scrollX);
var padding = 50;
overlayObj.style.top = window.scrollY + padding;
overlayObj.style.bottom = -window.scrollY + padding;

当页面调整大小+滚动时也会调用它,它工作正常,但是我注意到我们的 XSLT 中没有 doctype,这导致 IE 中的怪癖模式几乎破坏了一切。所以我添加了 HTML5 文档类型,现在上面的代码没有做任何事情。我已经发出警报以触发 的值,overlayObj.style.left当文件中没有 doctype 时,我会得到确切的 div 大小,但是当有 doctype 时,我会得到 value auto

有谁知道为什么会发生这种情况?以及如何让它给我价值?

获取我正在使用的数据时:

var computedStyle = window.getComputedStyle(overlayObj, null);
alert("left value: " + computedStyle.getPropertyValue("left"));

overlayObj.style.top如果我在有 doctype 时尝试返回,我没有得到任何响应。同样,没有 doctype 就没有问题,并且返回值。

4

1 回答 1

2

好吧,在怪癖模式下,浏览器确实会尝试理解您损坏的 CSS,但在标准模式下,您需要确保为 or 分配正确的 CSS 值,top并且left它由一个数字和一个单位组成,例如foo.style.left = 200 + 'px';. 因此,请确保您提供了该单元,并且该分配应该有效。

于 2012-07-18T17:59:35.527 回答