2

和有什么区别

<img id="el" src="HD.jpg" onload="loadImage();">
function loadImage() {...}

<img id="el" src="HD.jpg">
document.getElementById('el').onload=loadImage();

?

示例 1 在图像完全加载时触发该函数,示例 2 甚至在图像的第一位加载之前触发它。不应该是一样的吗?

通过全速互联网访问很难发现差异,但在狭窄的互联网访问中很明显。

请注意

document.getElementById('el').src.onload=loadImage();

也不行。

谢谢

编辑:对于近似的帖子标题感到抱歉,请毫不犹豫地提出一个合适的建议。

4

1 回答 1

1

您正在做的事情与您认为自己正在做的事情完全不同:您正在将返回的loadImage分配给元素的..onload成员。img

实际发生的情况是,当您的脚本加载时,它会分配调用loadImage()函数的结果(这就是为什么您会看到它在任何图像之前运行),这很可能会undefinedimg.onload处理,从而禁用它。

要执行您想要的操作,您需要为处理程序分配一个函数img.onload- 例如 - 只需包装另一个函数:

document.getElementById('el').src.onload = function() { loadImage(); };

或者您可以直接将您的函数分配为处理程序。它很好地说明了为什么它以前不起作用,尽管我不推荐它:

document.getElementById('el').src.onload = loadImage;

(注缺失()

于 2013-07-09T15:44:34.370 回答