Javascript 测试DOM元素的远视和;有效偏移网络宽度,无需连接
我需要测试元素的偏移网络宽度和偏移视线。目前,连接元件,然后测试偏移宽度和高度,然后移除元件 看起来是这样的:Javascript 测试DOM元素的远视和;有效偏移网络宽度,无需连接,javascript,performance,dom,offsetwidth,Javascript,Performance,Dom,Offsetwidth,我需要测试元素的偏移网络宽度和偏移视线。目前,连接元件,然后测试偏移宽度和高度,然后移除元件 看起来是这样的: var sizer = document.createElement('DIV'); sizer.innerHTML = element; //element is a string document.body.appendChild(sizer); if (sizer.offsetWidth > maxWidth) { sizer.style.width = maxWi
var sizer = document.createElement('DIV');
sizer.innerHTML = element; //element is a string
document.body.appendChild(sizer);
if (sizer.offsetWidth > maxWidth) {
sizer.style.width = maxWidth);
}
document.body.removeChild(sizer);
但这太慢了
编辑:
完整代码:
InfoBubble.prototype.getElementSize_ = function (element, opt_maxWidth, opt_maxHeight) {
var sizer = document.createElement('DIV');
sizer.style.display = 'inline';
sizer.style.position = 'absolute';
sizer.style.visibility = 'hidden';
if (typeof element == 'string') {
sizer.innerHTML = element;
} else {
sizer.appendChild(element.cloneNode(true));
}
document.body.appendChild(sizer);
// If the width is bigger than the max width then set the width and size again
if (opt_maxWidth && sizer.offsetWidth > opt_maxWidth) {
sizer.style.width = this.px(opt_maxWidth);
//size = new google.maps.Size(sizer.offsetWidth, sizer.offsetHeight);
}
// If the height is bigger than the max height then set the height and size
// again
if (opt_maxHeight && sizer.offsetHeight > opt_maxHeight) {
sizer.style.height = this.px(opt_maxHeight);
//size = new google.maps.Size(sizer.offsetWidth, sizer.offsetHeight);
}
var size = new google.maps.Size(sizer.offsetWidth, sizer.offsetHeight);
document.body.removeChild(sizer);
return size;
};
整个页面可能正在重新绘制-
将它放在一个绝对定位的、可见性隐藏的div元素中,它应该更快。我认为你不能精确地做到这一点,因为真正的元素大小取决于它的祖先元素。我之所以省略它,是因为我不相信它是相关信息,但在插入之前,元素是隐藏的样式,并且具有绝对位置。sizer.style.display='inline';sizer.style.position='绝对';sizer.style.visibility='hidden';它仍然很慢,特别是因为它发生得比较慢。你对我如何完成同样的任务有什么建议,即使没有很高的精确度?这段代码实际上不是我自己的,而是来自我正在使用的库。它现在正在拖拽我的整个应用程序。如果我找不到解决办法,我只需要彻底抛弃它。谢谢你的帮助。