页面加载事件中自调用函数的顺序 - javascript/html
Order of self-invoking function in page load events - javascript/html
我正在寻找根据页面加载中的事件顺序找出自调用 js 函数发生的顺序。我一直在谷歌上搜索这个问题的答案,但没有找到任何确定的答案。
至于这实际上适用于什么,我正在根据其中一个内部元素的高度调整外部元素的高度(具体取决于文本长度和屏幕宽度)
var text_elem = document.getElementById('text_elem');
var textElemHeight = text_elem.offsetHeight;
var newBkgdHeight = 96 + textElemHeight;
document.getElementById('background').style.height = newBkgdHeight + "px";
截至目前,此块是在自调用函数中执行的,而不是在 onload 事件中执行,因为在 onload 事件中有一个奇怪的效果,即页面加载后高度会调整一秒或两秒,但只是想要确保使用自调用函数是安全的,并且其中的代码不可能在 HTML DOM 加载之前执行。
编辑:
请注意,这是使用自调用函数或 IIFE 正常工作的,我只是想确保它是安全的并且将始终如一地工作,如果是的话,我可以向同事更好地解释这一点。
这里是这种情况的相关代码:
<style type="text/css">
#background {
height: 150px;
}
</style>
......
......
<div id="background">
<div id="text_elem">
${text loaded from somewhere else}
</div>
</div>
......
......
<script>
(function() {
var text_elem = document.getElementById('text_elem');
var textElemHeight = text_elem.offsetHeight;
var newBkgdHeight = 96 + textElemHeight;
document.getElementById('background').style.height = newBkgdHeight + "px";
})();
</script>
您的 IIFE 将在加载包含它的 <script>
块后立即执行。
由于位于HTML的末尾,所以会在前面的HTML全部加载到DOM后执行。
执行时间与您根本没有将其放入 IIFE 中,只是将其编写为顶级 JavaScript 代码没有什么不同。与将它放在 IIFE 中的唯一区别是变量是局部的而不是全局的。
我正在寻找根据页面加载中的事件顺序找出自调用 js 函数发生的顺序。我一直在谷歌上搜索这个问题的答案,但没有找到任何确定的答案。
至于这实际上适用于什么,我正在根据其中一个内部元素的高度调整外部元素的高度(具体取决于文本长度和屏幕宽度)
var text_elem = document.getElementById('text_elem');
var textElemHeight = text_elem.offsetHeight;
var newBkgdHeight = 96 + textElemHeight;
document.getElementById('background').style.height = newBkgdHeight + "px";
截至目前,此块是在自调用函数中执行的,而不是在 onload 事件中执行,因为在 onload 事件中有一个奇怪的效果,即页面加载后高度会调整一秒或两秒,但只是想要确保使用自调用函数是安全的,并且其中的代码不可能在 HTML DOM 加载之前执行。
编辑:
请注意,这是使用自调用函数或 IIFE 正常工作的,我只是想确保它是安全的并且将始终如一地工作,如果是的话,我可以向同事更好地解释这一点。
这里是这种情况的相关代码:
<style type="text/css">
#background {
height: 150px;
}
</style>
......
......
<div id="background">
<div id="text_elem">
${text loaded from somewhere else}
</div>
</div>
......
......
<script>
(function() {
var text_elem = document.getElementById('text_elem');
var textElemHeight = text_elem.offsetHeight;
var newBkgdHeight = 96 + textElemHeight;
document.getElementById('background').style.height = newBkgdHeight + "px";
})();
</script>
您的 IIFE 将在加载包含它的 <script>
块后立即执行。
由于位于HTML的末尾,所以会在前面的HTML全部加载到DOM后执行。
执行时间与您根本没有将其放入 IIFE 中,只是将其编写为顶级 JavaScript 代码没有什么不同。与将它放在 IIFE 中的唯一区别是变量是局部的而不是全局的。