Javascript 与Chrome相比,在IE11中计算offsetWidth值是不同的
我试图做的是在显示下拉元素之前计算其宽度,然后将该宽度添加到下拉元素中 在Chrome中,Javascript的工作方式应该是这样的,它给了我一个Javascript 与Chrome相比,在IE11中计算offsetWidth值是不同的,javascript,Javascript,我试图做的是在显示下拉元素之前计算其宽度,然后将该宽度添加到下拉元素中 在Chrome中,Javascript的工作方式应该是这样的,它给了我一个width:349px,这是正确的,但在IE11中,由于某种原因,它将该元素的宽度计算为width:89px,我不能完全确定 额外信息: Navbar下拉列表的构建方式与中的类似,因此它们在首次加载时隐藏,尽管不是使用display:none隐藏,而是使用opacity:0隐藏,因此我认为计算宽度不应该是个问题 下面的JS就是问题所在,只是为了防止我上
width:349px
,这是正确的,但在IE11中,由于某种原因,它将该元素的宽度计算为width:89px
,我不能完全确定
额外信息:
Navbar下拉列表的构建方式与中的类似,因此它们在首次加载时隐藏,尽管不是使用display:none
隐藏,而是使用opacity:0
隐藏,因此我认为计算宽度不应该是个问题
下面的JS就是问题所在,只是为了防止我上传到的下拉列表需要完整的Javascript代码
JS
this.dropdownSections.forEach(function(section) {
section.el.classList.remove("active");
section.el.classList.remove("left");
section.el.classList.remove("right");
if (section.name == dropdownName) {
section.el.classList.add("active");
className = "right";
// Width of the element is calculated here
ddWidth = section.content.offsetWidth;
ddHeight = section.content.offsetHeight;
section.content.style.width = ddWidth + "px";
section.content.style.height = ddHeight + "px";
activeContent = section.content;
if (options && options.keyboardNavigation) {
self.registerArrowKeyNavigation(rootEl, section.el);
}
} else {
section.el.classList.add(className);
}
});
从屏幕截图中可以看到Chrome vs IE11的结果
又一次提醒人们,为什么永远都不应该相信微软浏览器能做任何正确的事情。@Rob Yep,幸运的是它在Edge上工作,但我真的需要让它在IE11上工作