代码之家  ›  专栏  ›  技术社区  ›  Emerick Rogul

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

  •  0
  • Emerick Rogul  · 技术社区  · 15 年前

    我正在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 被调用,但这似乎与委托人的姓名相矛盾。有人知道我可能在这里找不到什么吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Emerick Rogul    15 年前

    结果证明这个错误完全是我的错。我在帧包装器中缓存一个指向DOM文档的指针。当然,由于一个框架比一个DOM文档寿命长,所以在加载一个新页面后,我最终引用了一个过时的文档。