我像这样绑定window.onload事件
// It's a little more complex than this, I analyze if there is any other function
// attached but for the sake of the question it's ok, this behaves the same.
window.onload = myfunction;
在生产服务器上多次在我的本地计算机上触发Onload
如果我用jQuery等价物改变它
$jQuery(window).load(myfunction);
它的行为符合预期(仅执行一次)。
你能否帮助我理解为什么第一个选项没有按预期工作的可能原因?
谢谢!
答案 0 :(得分:6)
作业的括号 - myfunction()
- 执行你的功能。您尚未显示myfunction
的作用,但这意味着该函数的返回值被分配给window.onload
,而不是函数本身。所以,我不知道如何执行,除非你以某种方式让它工作,比如用return this;
结束函数
你想要
window.onload = myfunction;
击> <击> 撞击>
鉴于window.onload
的性质,纯粹的浏览器事件似乎不可能对myfunction
进行两次调用。因此,函数内部的断点将帮助您查看调用堆栈。我已经为Chrome添加了截图。
示例代码:
var alertme = function() {
alert("Hello");
}
window.onload = alertme;
function testsecondcall() {
alertme();
}
testsecondcall();
在右侧的“调用堆栈”下,您会看到alertme
testsecondcall