我想问一个关于Javascript onload
的问题。
我正在编写一个代码为<%@ include file ="body.jsp"
的JSP页面。包含的body.jsp
包含:
<table onload="function()">
应该加载javascript函数,但它似乎对页面没有任何影响。 onload
仅适用于body
代码吗?
答案 0 :(得分:39)
Onload只能用于<body>
,<img>
,<script>
,<iframe>
标记,因为它会告诉您何时外部资源(图像,脚本,框架)或整个页面(正文)已加载
由于 HTML5 ,这些也可以触发加载事件:<link>
,<style>
,<input type=image>
,<object>
尽管如此(e.g. older Android browsers)
答案 1 :(得分:14)
为什么不通过<script tag>
包含它?
在.jsp文件中
<script>
window.onload = function() {
alert("Hello!");
}
// or to execute some function
window.onload = myFunction; //notice no parenthesis
</script>
答案 2 :(得分:3)
正如其他人已经声明的那样,onLoad事件不会在桌面上发射。您可以做的是将onLoad-handler附加到body元素(然后在加载页面时将触发)并通过例如为表分配id来操作表。
<body onload="function() { var table = document.getElementById("table-id"); ... }">
<table id="table-id"></table>
</body>
你使用的是一些javascript框架吗?
答案 3 :(得分:2)
“onLoad”可用于body-frameset-frameset-tag。 要查看您可能使用的某些操作:
<body onload="function(){alert('This is an action!')}">
答案 4 :(得分:0)
我找到的最简单方法是使用外部javascript文件和jquery。
// Variables and functions you want to declare
var socket = io.connect();
// .....
// Function you want to run on load
$(function() {
$('#submit').click(function() {addUser();});
// ... any other functions you want to run on load
});
这是我正在处理的代码片段。变量在代码运行之前声明(它创建一个Web套接字)。
然后是jquery文档选择器($
),它在加载时运行并调用init函数来修改我的html。我用它来调用一个立即运行的匿名函数。
答案 5 :(得分:0)
您可以在带有代码的表后立即添加一个<script>
标签。一旦到达script标记,就意味着它上面的表元素的DOM已经加载,现在可以在它下面的脚本中访问。
注意:以下内容不适用于该问题,但会给出其他答案。
我建议使用javascript中的addEventListener
函数添加事件。这样可以确保您不会被任何想听事件的人覆盖,也不会被其他人覆盖。
var iframe = document.getElementsByTagName('iframe')[0];
iframe.addEventListener('load', function(event){ console.log("iframe Loaded", event); })