使用CTRL + SHIFT + R与F5重新加载时,元素测量宽度不同

时间:2014-10-08 04:43:15

标签: javascript jquery

我有代码插入一个元素并测量它的宽度。使用F5刷新(使用缓存)时​​,宽度为440px。使用CTRL + SHIFT + R(重新下载缓存文件)时,宽度为290px。类似的问题建议使用$(window).load。但我已经尝试过,行为没有变化。在10秒内超时运行代码也会产生不同的结果。

似乎问题是在应用css之前运行测量。但是使用load事件和/或10秒超时应该可以解决这个问题。它没有。

这是Firefox 30.页面上禁用了所有其他脚本。 JS文件加载到页脚中,css加载到<head>

样品:

var $el = $(...);
$el.css('position','absolute').css('left','-9999999px');
$parent.append($el);
var Width = parseInt($el.outerWidth(), 10);
console.log('Width: '+Width); //290 OR 440

无法解决问题的类似问题:

Jquery width() function on chrome gives me different values on loading and reload(F5)

jQuery behaving strange after page refresh (F5) in Chrome

1 个答案:

答案 0 :(得分:0)

使用 defer 嵌入脚本,如下所示:

<script defer src="yourscript.js"></script>

使用 defer 加载脚本可确保在解析文档后(但在触发DOMContentLoaded之前)执行该脚本。