日期:2014-05-16  浏览次数:20314 次

为什么抓不到页面上的所有图象?
我用window.document.getElementById("appcontent").addEventListener("DOMContentLoaded", MyMain, false); 去抓所有图象. 


MyMain(event)
{
  var imgs = event.target.getElementsByTagName("img");
  for (i = 0; i < imgs.length; i++) {
  path = imgs[i].src;
  alert(path);
  }
}

结果对www.weibo.com进行测试, 开始几个图象alert()都显示出来了, 但是因为该页面比较长, 我用鼠标查看该页的后面的内容时, 结果显示: 正在加载,请稍后(非常快,也就1s), 显示出该页后面内容后, 这些新的图象就没有用alert()显示.
就是说, 图象已经显示出来, 且我们已经看到了, 但程序中alert()没有显示这些图象名.
why?
怎么做?

------解决方案--------------------
应该是lazyload+ajax动态加载了非第一屏的内容,但是DOMContentLoaded事件是在DOM已经准备好,而其他资源可能还未下载完毕时触发的,所以其他内容未加载前已经执行过DOMContentLoaded事件了。
------解决方案--------------------
weibo.com 很多是异步加载的


------解决方案--------------------
兄弟,首先DOMContentLoaded是在DOM加载完毕执行的方法,所以说,针对你所说的就有定论了!因为,在DOM加载的过程中,就已经有某些图片涵盖在里面了!所以你的抓取方法,就读取到了!此时加载的图片,而在你DOMContentLoaded 方法执行后,所加载的图片,你此时的方法是无法读取此时的图片!