我正在尝试修复为我编写的旧脚本。我需要它在没有<body onload="init ();">
的情况下运行。我想从脚本内部运行该函数而不使用像该命令那样的内联代码。对不起,我不是JS专家,但我该怎么做?
答案 0 :(得分:26)
<script type="text/javascript">
function init() {
// Put your code here
}
window.onload = init;
</script>
或者,如果您使用的是jQuery:
$(function() {
// Your code here
});
答案 1 :(得分:14)
在纯JavaScript实现中,您需要等待页面准备好调用您的事件。最简单的解决方案是这样的:
<script type="text/javascript" language="javascript">
window.onload = function()
{
init();
};
</script>
但是,通过将其放在标签本身上,这并不比原始实现好多少。你可以做的是等待一个特定的事件:
document.addEventListener("DOMContentLoaded", function()
{
init();
}, false);
这应该在周期中提前一点开始,应该做得很好。
此外,如果您使用的是jQuery,则只需添加一个函数,以便在使用简单语法触发该事件时执行:
$(document).ready(function() // or $(function()
{
init();
});
答案 2 :(得分:3)
这是Tejs回应的微小变化。我经常发现将init()函数与注册事件处理程序的代码分开更具可读性和可管理性:
function init(e) {
//statements...
}
document.addEventListener('DOMContentLoaded', init, false);
另外,代替显式的init()函数,我有时会使用一个自动执行的匿名函数放在页面的最底部,就在</body>
标记之前:
(function() {
//statements...
})();
答案 3 :(得分:2)
最佳选择是将呼叫放在页面底部的init()
:
<html>
<head>
...
</head>
<body>
.... page content here ...
<script type="text/javascript">init();</script>
</body>
</html>
通过将它放在底部,你可以确定它几乎就像页面上的最后一样。但请注意,它不如在body标签中使用onload选项或jquery的$('document').ready()
或mootool的window.addEvent('domready', ...)
那样可靠。
答案 4 :(得分:-2)
<script type="text/javascript">
function init() {
// Put your code here
}
window.onload = init;
</script>
这不是应该使用这个
的工作<script type="text/javascript">
function init() {
// Put your code here
}
window.onload = init();
</script>