替换<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>
我应该运行初始化代码吗?
答案 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)
现在已解决了额外括号的问题,我即将测试的最终解决方案是:
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", init);
} else {
window.onload = init;
}
&#13;
我知道JQuery可以使用它的.ready事件执行此操作,但其中一些页面是非常小的Ajax内容页面,如果没有必要,我宁愿避免JQuery的开销。