javascript - 主体加载注入(inject): how to restore order sequence

标签 javascript

我想向 body onload 添加一个事件监听器,并在现有事件监听器之后执行。但执行却是相反的。为什么 ?如何解决这个问题?

https://jsfiddle.net/0LcL1usj/

<html>
<script>
    function test() {
        alert('SHOULD BE FIRST');
    }
</script>

<script>
// Dean Edwards/Matthias Miller/John Resig

function init() {

// quit if this function has already been called
if (arguments.callee.done) return;

    alert("hello init");

// flag this function so we don't do the same thing twice
arguments.callee.done = true;

// kill the timer
if (_timer) clearInterval(_timer);

// do stuff
};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", init, false);
}

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
    if (this.readyState == "complete") {
    init(); // call the onload handler
    }
};
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
    init(); // call the onload handler
    }
}, 10);
}

/* for other browsers */
window.onload = init;
</script>

<body onload="test();">

</body>

</html>

最佳答案

onload 事件发生在 DOMContentLoaded 之后:

  • DOMContentLoaded当整个 DOM 构建完成时触发,
  • onload当所有链接资源(字体、图像、脚本、iframe...)另外加载时触发。

关于javascript - 主体加载注入(inject): how to restore order sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34888817/

相关文章:

javascript - jquery动画编号从到

javascript - 如何更改 <span> 元素的文本?

javascript - 如何在 react 中设置按钮在特定条件下禁用?

javascript - Froala WYISWYG 编辑器不显示工具栏

Javascript deleteRow 导致indexSizeError,需要关闭

javascript - 动态创建没有字符串的引用

javascript - 如何在jquery日历上显示

javascript - 如何选择动态添加的下拉列表的默认选项

javascript - 如何检查变量是类还是 id(jQuery)

javascript - 根据鼠标位置绘制像素