Javascript Chrome中的outerHeight给出错误的值,IE和FireFox中的OK

Javascript Chrome中的outerHeight给出错误的值,IE和FireFox中的OK,javascript,jquery,css,google-chrome,smart-wizard,Javascript,Jquery,Css,Google Chrome,Smart Wizard,在jquery.smartWizard插件中,有一个名为fixHeight的函数,用于调整向导步骤的高度。当第一次显示步骤或在步骤中显示隐藏的div时,使用此选项。它在IE(至少在Win8.1上的IE11)和FireFox中运行良好。但是,在最新版本的Chrome(版本40.0.2214.94 m)中,outerHeight的值比它应该的值小得多,超过100像素或更多 这是开箱即用的功能: SmartWizard.prototype.fixHeight = function(){ var

在jquery.smartWizard插件中,有一个名为fixHeight的函数,用于调整向导步骤的高度。当第一次显示步骤或在步骤中显示隐藏的div时,使用此选项。它在IE(至少在Win8.1上的IE11)和FireFox中运行良好。但是,在最新版本的Chrome(版本40.0.2214.94 m)中,outerHeight的值比它应该的值小得多,超过100像素或更多

这是开箱即用的功能:

SmartWizard.prototype.fixHeight = function(){
    var height = 0;

    var selStep = this.steps.eq(this.curStepIdx);
    var stepContainer = _step(this, selStep);
    stepContainer.children().each(function() {
        if($(this).is(':visible')) {
             height += $(this).outerHeight(true);
        }
    });

    // These values (5 and 20) are experimentally chosen.
    //stepContainer.height(height);
    //this.elmStepContainer.height(height + 12);

    stepContainer.animate({ "height": height - 12 }, 500);
    this.elmStepContainer.animate({ "height": height }, 500);
    alert(window.outerHeight);

}
我修改最后的步骤以添加动画。无论是否使用Chrome,都会失败

编辑: 这是一把小提琴,展示了IE和Chrome的区别。单击成员,然后单击非成员。您将看到,在每个浏览器中,第二组值是不同的。

EDIT2: 这是另一个显示两个浏览器获得相同高度值的提琴,直到您尝试并计算可见元素。然后,铬是远远不够的。

虽然不是最好的解决方案,但我确实解决了这个问题。Firefox和IE都在增加div中所有内容的高度,包括break标签和任何创建垂直空间的内容。在我看来,Chrome是坏的,而且没有添加这些额外的元素!它不会返回消耗的垂直空间的真实值


我的解决方法是将div的内容包在另一个虚拟div中。这样jQuery查看第一个子div的高度并正确返回高度。

我有同样的问题,一个滚动条在中间,阶梯容器从不修复高度。

然后在
jquery.smartwizard.js
中更改这一行:

$this.elmStepContainer.height(_step($this, selStep).outerHeight());
为此:

$this.elmStepContainer.height(_step($this, selStep).outerHeight() +20);

20对我来说已经足够了,我的问题已经解决了。

你应该提供一个示例,将你的问题复制为一个JSFIDLE和所有相关的代码/CSS/HTML标记。也许你的问题只是因为你没有等待所有内容都被完全呈现。我尝试过在窗口加载事件、页面加载中包装,甚至添加了延迟,没有任何区别。我添加了另一个小提琴,它更简单地显示了问题。Chrome没有考虑<代码> BR> 元素是可见的,甚至它影响了流的内容。代码>铬,在我看来是坏的:我倾向于同意