在已加载的元素上调用onload

时间:2018-08-01 19:02:28

标签: javascript events javascript-events handler

如果在已加载的元素(例如iframe)上调用onload()会发生什么?

假设myIframe已经加载,我执行以下命令:

myIframe.onload = function () { console.log('iframe loaded') };

它将执行吗?

1 个答案:

答案 0 :(得分:0)

  1. 这不是有效的JavaScript语法。执行代码 myIframe.onload() = function () { console.log('iframe loaded') }; 会导致错误
  

未捕获的ReferenceError:分配中的左侧无效

  1. onload事件不存在,但是load事件存在,并且将其附加到HTML元素的正确方法是iframe.addEventListener("load", () => console.log("iframe loaded"));
  2. iframe加载后,将不再接收到加载事件,但是您可以手动创建该事件并将其传递给元素var event = new Event("load"); iframe.dispatchEvent(event);
  3. 一旦调度加载事件,导致iframe两次接收到加载事件,您就会在控制台中看到两次打印“ iframe加载”。

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>