从didFinishLoad委托调用时,getElementsByTagName返回0长度列表

时间:2010-05-24 19:29:07

标签: c++ dom webkit

我在Windows上使用WebKit的Chromium端口,我正在尝试检索文档中所有图像的列表。我认为最好的方法是实现WebKit::WebFrameClient::didFinishLoading,如下所示:

WebNodeList list = document->getElementsByTagName(L"img");
for (size_t i = 0; i < list.length(); ++i) {
  // Manipulate images here...
}

但是,当此委托触发时,list.length()返回0.我看到它返回非零长度列表的唯一时间是我将“body”或“head”替换为“img”。奇怪的是,如果我在代理人的之外调用getElementsByTagName(L"img") ,它就能正常工作。

我猜测在调用didFinishLoading时DOM没有完全加载,但这似乎与委托的名称相矛盾。有谁知道我在这里失踪了什么?

1 个答案:

答案 0 :(得分:1)

事实证明,错误完全在我身边。我正在我的框架包装器中缓存指向DOM文档的指针。当然,由于框架可以比DOM文档更长,所以在加载新页面后,我最终引用了一个过时的文档。