当不缩小脚本时,window.onload
确实能正常工作。
但当我使用Uglify-js文件夹缩小脚本时,它没有。
如果我写以下内容并缩小它:
window.onload = function() {
// My code
console.log( "HELLO TO YOU" );
};
它在浏览器中不起作用。
但如果我写以下内容:
jQuery(document).ready(function() {
// My code
console.log( "HELLO TO YOU" );
});
它工作正常!
即使只有console.log()在缩小后也不能使用window.onload
打印任何东西。
- 任何想法??**
下面是输出:
window.onload = function() {
let e = document.querySelector("#main-header")
, t = e.offsetHeight
, o = document.querySelector("#et-main-area")
, n = document.querySelector("#wpadminbar");
o.style.marginTop = t + "px",
e.style.top = n ? n.offsetHeight + "px" : "0px"
}
,
jQuery(document).ready((function() {
let e = document.querySelector("#main-header")
, t = e.offsetHeight
, o = document.querySelector("#et-main-area")
, n = document.querySelector("#wpadminbar");
o.style.marginTop = t + "px",
e.style.top = n ? n.offsetHeight + "px" : "0px",
console.log("HELLO")
}
2条答案
按热度按时间hujrc8aj1#
在函数表达式和对
jQuery().ready()
的调用之间有一个comma operator。这意味着分配给
onload
属性的值将是 *ready()
的返回值 *,而不是函数表达式。假设逗号是由Uglify-js生成的,那么这是Uglify-js中的一个bug,你应该在那里报告它。
旁白:
addEventListener
优于on*
属性(并且不会受到此错误的攻击)DOMContentLoaded
可能比load
更适合您的需要defer
属性可能比任何类型的事件更适合您的需要。icnyk63a2#
在我的例子中,我最终将我的代码重新格式化为在各自的文件中命名函数的不同功能,并从
window.onload
或更好的addEventlistener( DOMContentLoaded)
的单个调用中调用函数。