2010-05-24 4 views
0

J'utilise le port Chromium de WebKit sous Windows et j'essaie de récupérer une liste de toutes les images de mon document. Je me suis dit la meilleure façon de le faire était de mettre en œuvre WebKit::WebFrameClient::didFinishLoading comme ceci:getElementsByTagName renvoie la liste de longueur 0 lorsqu'elle est appelée par le délégué de didFinishLoad

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

Cependant, lorsque les feux de ce délégué, list.length() renvoie 0. Les seules fois où je l'ai vu retourner une liste de longueur non nulle est quand je substitue "corps" ou "tête" pour "img". Curieusement, si j'appelle getElementsByTagName(L"img")en dehors de du délégué, cela fonctionne correctement.

Je suppose que le DOM n'est pas complètement chargé lorsque didFinishLoading est appelé, mais cela semble contredire le nom du délégué. Est-ce que quelqu'un sait ce que je peux manquer ici?

Répondre

1

Il s'est avéré que l'erreur était purement de mon côté. Je mettais en cache un pointeur vers le document DOM dans mon wrapper de cadre. Bien sûr, puisqu'un cadre peut survivre à un document DOM, j'ai fini par référencer un document obsolète une fois que j'ai chargé une nouvelle page.