如果对已经加载的元素(例如iframe(调用onload()
,会发生什么?
假设myIfram
e已经加载,我执行以下操作:
myIframe.onload = function () { console.log('iframe loaded') };
它会执行吗?
- 这不是一个有效的JavaScript语法。执行代码
myIframe.onload() = function () { console.log('iframe loaded') };
将导致错误
未捕获引用错误:分配中的左侧无效
- onload事件不存在,但load事件存在,将其附加到HTML元素的正确方法是
iframe.addEventListener("load", () => console.log("iframe loaded"));
- 一旦加载了iframe,它将不会再次接收加载事件,但您可以手动创建事件并将其传递给元素
var event = new Event("load");
iframe.dispatchEvent(event);
- 一旦您调度了加载事件,导致iframe接收了两次加载事件,您将在控制台中看到两次打印的"iframe loaded">
var iframe = document.getElementById("frame");
iframe.addEventListener("load", () => console.log("iframe loaded"));
var event = new Event("load");
iframe.dispatchEvent(event);
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>
Functions
</title>
</head>
<body>
<iframe id="frame" src="http://support.worldpay.com/support/kb/gg/corporate-gateway-guide/content/resources/images/hpp_iframe_-_paymt_mthd_select_page_04.jpg"></iframe>
</body>
</html>