在为添加事件监听器时,load
我不能只像对click事件那样使用函数文字。为什么不能为click事件使用像我一样的函数文字?
<body>
<div>some content</div>
<script>
var div = document.getElementsByTagName("div")[0];
// does not work (console is not written to when page loads)...
div.addEventListener("load", function(){console.log("div load event")}, false);
// works (console is written to when div content is clicked...
div.addEventListener("click", function(){console.log("div click event")}, false);
</script>
</body>
该load
事件触发中的元素,其加载外部内容,例如img
,iframe
等
事实是,load
事件可能不会在声明事件之前触发内容加载的情况下触发。因此,如果您希望load
事件起作用,则需要在src
或之前声明它href
。
一旦div
被宣布它已经加载。因此,不可能在中触发此类事件div
。
如果您想知道div
,包括其img
已加载的元素,则必须load
为每个声明事件,即:
var loaded = 0;
var images = div.getElementsByTagName("img"),
len = images.length;
function imgload() {
if(++loaded > len) {
console.log("Div loaded.");
}
}
for(var i = 0, img; img = images[i]; i++) img.addEventListener("load", loaded);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句