我刚刚在 IE8 中遇到了这个奇怪的问题,我似乎找不到更多关于它的细节。当然,如果我创建了一个 JavaScript 对象,无论如何我都可以通过动态定义它们来简单地添加属性:
var rect = {};
rect.x = 200;
伟大的。如果我调用这样的方法,那么在 IE8 中(我不确定其他 IE 是什么):
var span = document.getElementById('my-span');
var rect = span.getBoundingClientRect();
rect.x = Math.round( rect.left );
然后我收到 IE 错误“对象不支持此属性或方法”。这当然不会发生在我提到的第一种情况下,我个人在 javascript 中定义了我自己的对象。现在最简单的解决方法是这样做:
var clientRect = span.getBoundingClientRect();
var rect = { top: clientRect.top, left: clientRect.left, right: clientRect.right, bottom: clientRect.bottom };
rect.x = Math.round( rect.left );
那没问题。但我想知道的是,为什么 IE8 不允许我向getBoundingClientRect()
方法返回的对象动态添加字段/属性/属性(我不确定正确的 JS 术语)?是否有另一种(正确的)方法来添加属性?对象的方法返回的所有对象都会发生这种情况window
吗?这有记录吗?或者它是一个错误?(在这种情况下,我将采取解决方法并继续前进)。