2011-05-18 62 views
5

我有重视onload事件处理程序在页面上所有图像的脚本,但是因为它是一个的GreaseMonkey脚本后的图像是有它只能运行,所以它们中的一些可能已经加载,有没有办法触发onload事件,如果图像已经加载?图像的onload事件加载

+0

我做了一个解决方法,创建一个新的图像对象与图像元素相同的来源和工作,并取代原始图像 – Bugster 2011-05-18 17:07:56

回答

0

这是一个onload事件。我不会认为这个事件会多次触发。

你可以通过所有的影像附加脚本到身体/文件onload事件和循环,附上您的事件处理程序,然后,或许。

+0

这工作,但页面加载缓慢,图像需要尽快更换 – Bugster 2011-05-18 15:57:30

+0

另一种选择是在页面加载完成之前,但在图像加载之后,通过将脚本直接包含到页面中,将事件处理程序分批加入到图像中。不知道这是否适用于Greasemonkey。 – 2011-05-18 16:05:51

+0

我试过,但一些图像加载之前,我可以添加脚本 – Bugster 2011-05-18 16:18:30

1

如果你并不反对使用框架如jQuery,还有应该做你需要什么triggerHandler()函数。

你需要一个测试,以检查是否图像已在脚本中被加载(应该能够找到关于如何使用谷歌做详细说明) - 如果它没有被加载,只需连接onload事件处理程序;如果它已经被加载,你可以附加onload事件处理程序,然后使用jQuery的triggerHandler()函数触发它,或者执行本来会由onload事件处理程序执行的代码/函数 - 这最容易取决于你的onload事件处理程序。

+0

出于某种原因,我不能编辑的问题,但我想要的是一种方法来附加事件,将触发时加载图像,或者如果图像已经加载将立即运行 – Bugster 2011-05-18 16:05:38

+0

@Bugster我编辑了我的答案,包括一些额外的信息,你如何能够做到这一点。 – 2011-05-19 08:24:11

+0

这将是一个很好的解决方案,但我已经有一个,也许我会稍后实施它 – Bugster 2011-05-19 17:43:34

0

我刚刚遇到同样的问题,Google将我带到那里。

我不想使用jQuery,所以我搜索了另一种解决方案。最后,就我而言,我只是在设置“src”中的右图像之前将图像的“src”属性更改为任何虚拟图片(例如1pix.png),以强制每个图像重新加载。当然,如果你有大图像和/或如果你频繁加载图像,这不是一个好主意......但在我的情况下,我猜可以(此外,我认为底层浏览器缓存机制避免了实际的图像重新加载。 ..)。

希望它可以帮助别人!

PS:这似乎是接近@Bugster解决方法,但我真的不明白!