JavaScript在HTML中的onload事件

27

我想问一个关于Javascript的onload的问题。

我正在编写一个包含代码<%@ include file ="body.jsp"的JSP页面。 包含的body.jsp内容如下:

<table onload="function()">

这个应该可以加载Javascript函数,但它似乎对页面没有任何影响。 onload只能在body标签上使用吗?

6个回答

45

Onload只能用于<body><img><script><iframe>标签上,因为它会告诉你外部资源(图像、脚本、框架)或整个页面(正文)何时加载完成。

自从HTML5出现以来,<link><style><input type=image><object>也可以触发load事件。虽然支持这些标签的浏览器可能会有所不同(例如旧版Android浏览器,详见此处)。


<object>元素相关的编程内容。 - Andrey

15

为什么不直接通过 <script> 标签引入它呢?

在你的 .jsp 文件中

<script>
    window.onload = function() {
        alert("Hello!");
    }
    // or to execute some function
    window.onload = myFunction; //notice no parenthesis
</script>

3

正如其他人所述,onLoad事件不会在表格上触发。你可以将onLoad处理程序附加到body元素(当页面加载时将触发它),并通过为表格分配ID来操作表格。

<body onload="function() { var table = document.getElementById("table-id"); ... }">
    <table id="table-id"></table>
</body>

你是否正在使用一些JavaScript框架?


2
"

"onLoad" 可以用于 body- 和 frameset- 标签。 要看到一些动作,您可以使用:

"
<body onload="function(){alert('This is an action!')}">

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。我使用它来调用一个立即执行的匿名函数。


这太脱离上下文了。我不知道该说什么。 - kiltek

0

您可以在代码表格后面直接添加一个<script>标签。一旦到达脚本标签,就意味着上面的表格元素的DOM已经加载完成,现在可以在下面的脚本中访问它。

注意:以下内容与问题无关,而是针对其他给出的答案。

我建议使用javascript中的addEventListener函数来添加事件。这可以确保您不会被其他人覆盖或将要被覆盖,想要监听该事件。

示例

var iframe = document.getElementsByTagName('iframe')[0];
iframe.addEventListener('load', function(event){ console.log("iframe Loaded", event); })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接