2011-07-31 33 views
3

我想尽快让window.onload事件触发,这样Google就会认为我的页面加载速度更快(这是一个令人沮丧的任务,因为到window.onload需要多长时间基本上与用户角度无关,但我离题)做<iframes>和通过AJAX加载的图像延时window.onload?

但是,我不知道什么延迟onload事件!具体来说:

  1. 如果我在我的页面加载一个Facebook Likebox在,它的加载是否延迟onload事件?如果likebox iframe必须加载一堆配置文件图片,怎么办?负载是否等到它们完全加载?
  2. 假设在准备就绪的文档中,我为HTML blob执行异步AJAX请求并将其注入页面。如果这个HTML blob包含一堆<img>标签,onload事件是否等待所有这些加载?

一般来说,浏览器如何知道何时触发onload事件?什么样的东西阻止负荷,什么样的事情不?

回答

2

a)除减少页面“权重”外,您无法控制window.onload。它由浏览器决定什么时候宣布该事件。

b)谷歌没有关于window.onload事件的线索,因为它没有解析JavaScript。

1)通过使用类似按钮的XFBML版本和Facebook JavaScript SDK(http://developers.facebook.com/docs/reference/javascript/FB.init/)的异步加载,您可以完全消除Facebook有效载荷。请注意,只有在启用JavaScript的情况下,它才会起作用。

2)一切都会显着增加你的网页的重量应该加载asynchrouniusly,最好在window.onload事件发射后。

+1

如果你看看webmastertool谷歌确实看这个数据,你的页面完成渲染需要多少时间。包括JavaScript调用。 – Ibu

+0

谷歌定义页面加载时间时,会自动解析javascript(抓取工具可能不会,但我不是在谈论抓取工具)。查看网站管理员工具 –

+0

@Ibu,Horace Loeb READING和PARSING JavaScript代码之间存在巨大差异。除了能够遵循JavaScript嵌入式链接并做一些基本的JavaScript代码之外,Google无法对JavaScript进行PARSE(理解)。因此它不能理解window.onload。它可以假设一个页面完全加载需要多长时间。 – brezanac

2

如果你看看瀑布,在firebug或chrome检查器中,iframe和ajax调用确实会影响onload事件。我遇到类似的问题,脸书显着减慢网站。是的,在查看网站站长工具中的网页加载时间时,它会显示滞后。

我的解决方案是在页面完全加载时动态添加facebook iframe。对于ajax调用,我只在加载时触发它们。

这使我的页面加载时间从嵌入式Facebook iframe的7秒,动态追加到2.6秒。

+0

你怎么能从瀑布中知道哪些物品阻挡了荷载? onload之前启动的一些请求不会阻止.. –

+0

例如在谷歌浏览器上,您可以查看垂直红线之前的最后一项。只要看看它有多长,或者什么时候开始。 – Ibu

+0

*红线前的最后一项*开始*或者在红线之前*结束的最后一个项目? –