正确的JavaScript等价物

时间:2016-08-25 14:29:43

标签: javascript dom domcontentloaded

替换<body onload="init();">的正确JavaScript方法是什么,请记住我们不再需要支持非常旧的浏览器。

在我的情况下,我想在所有标签上添加一个onClick事件,并希望将Javascript与我的HTML页面分开。

window.onload = init();

从这开始,但发现全局文档对象在init()内不可用,这似乎是一个时间问题。它在旧版浏览器中效果更好吗?

document.addEventListener("DOMContentLoaded", init, false);

似乎是一种更现代的可靠方式,但所有现代浏览器都支持这种方式吗?

然后有建议将init()放在页面的底部,但这显然是回到在HTML中直接使用Javascript。

<script type="text/javascript">init();</script>

我应该运行初始化代码吗?

3 个答案:

答案 0 :(得分:0)

我认为您想要的是context.addRoutes(new RouteBuilder(){ public void configure(){ from("direct:getOffers") .to("jetty:http://localhost:9008/api/v2.0/offers? bridgeEndpoint=true") .end(); } }); $(function(){}),如Marc B所述。这似乎可以实现你所要求的,除非我误解了你的问题。 jQuery API支持这一点。

  

.ready()方法提供了一种在页面的文档对象模型(DOM)可以安全操作时运行JavaScript代码的方法。

答案 1 :(得分:0)

最简单的方法是在body的末尾添加一个脚本标记,并使用自调用匿名函数:

<body>

<!-- content here -->

<script type="text/javascript">
(function() {
    //Run init code here
})();
</script>
</body>


对于外部js文件:

<body>

<!-- content here -->

<script src="main.js" type="text/javascript"></script>
</body>

main.js文件:

(function() {
    //Run init code here
})();

答案 2 :(得分:-1)

现在已解决了额外括号的问题,我即将测试的最终解决方案是:

&#13;
&#13;
if (document.addEventListener) {
  document.addEventListener("DOMContentLoaded", init);
} else {
  window.onload = init;
}
&#13;
&#13;
&#13;

我知道JQuery可以使用它的.ready事件执行此操作,但其中一些页面是非常小的Ajax内容页面,如果没有必要,我宁愿避免JQuery的开销。