Differences between window.onload/onunload and body.onload/onunload
我已经阅读了问题window.onload vs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> test 1 <script type="text/javascript"> var initialSelectedIndex = 0; function resetMenu() { document.getElementById("fruitMenu").selectedIndex = initialSelectedIndex; } </head> <body onloadx="resetMenu();" onunload="resetMenu();"> <br /> <select id="fruitMenu"> <option value ="apple">apple</option> <option value ="banana">banana</option> <option value ="strawberry">strawberry</option> <option value ="grape">grape</option> </select> <p> </p> </body> </html> |
和:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> test 2 <script type="text/javascript"> var initialSelectedIndex = 0; function resetMenu() { document.getElementById("fruitMenu").selectedIndex = initialSelectedIndex; } window.onload = resetMenu(); window.onunload = resetMenu(); </head> <body> <br /> <select id="fruitMenu"> <option value ="apple">apple</option> <option value ="banana">banana</option> <option value ="strawberry">strawberry</option> <option value ="grape">grape</option> </select> <p> </p> </body> </html> |
在"测试1"页面上,如果您从下拉菜单中选择一个项目,然后单击链接以离开该页面,然后单击"后退"按钮,则菜单将重置为其初始状态。 不过,"测试2"页面不会发生这种情况。 为什么?
虽然这是一个测试,但我的目标是使用RegisterStartupScript或RegisterClientScriptBlock在aspx页面上执行类似的操作,因此我希望能够不使用主体onload / onunload但使用window.onload / onunload来重新创建"测试1"的行为。 。
通过使用以下命令,月牙是正确的:
1 | window.onload = resetMenu(); |
您正在使window.onload等于resetMenu函数的返回值,而不是提供应称为onload(和卸载)的函数。 因此,您应该使用:
1 2 | window.onload = resetMenu; window.onunload = resetMenu; |
但是,为什么在页面卸载后需要重置菜单?
注意:您还可以使用匿名函数作为onload处理程序:)