Javascript preload - onload不一致

时间:2013-07-09 15:35:50

标签: javascript image-preloader

之间有什么区别
<img id="el" src="HD.jpg" onload="loadImage();">
function loadImage() {...}

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

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

通过全速互联网访问很难发现差异,但是很明显,差异很小。

请注意

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

也不起作用。

谢谢

编辑:对于近似的帖子标题抱歉,不要犹豫,建议一个合适的标题。

1 个答案:

答案 0 :(得分:1)

您正在做的事情与您的想法完全不同:您要将loadImage返回的分配给..onload成员img } element。

实际发生的是,当你的脚本加载时,它会分配调用loadImage()函数的结果(这就是你看到它在任何图像之前运行的原因),这很可能{ {1}}到undefined处理程序,从而禁用它。

要做你想做的事,你需要将一个函数分配给img.onload处理程序 - 例如 - 只需包装另一个函数:

img.onload

或者您可以直接将您的函数指定为处理程序。它很好地说明了为什么它之前没有用,虽然我不会推荐它:

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

(请注意缺少document.getElementById('el').src.onload = loadImage;