DocumentCompleted tirant plusieurs fois – la réponse StackOverflow acceptée ne fonctionne pas

Je teste si mon navigateur Web est complété avec:

webBrowser2.DocumentCompleted += (s, e) => { // Do stuff } 

La page Web à laquelle je suis en train d’accéder accède à des tonnes de fichiers JS, d’iframes et d’autres éléments. J’utilise donc la fonction ci-dessous pour vérifier que le chargement de la page est terminé.

 webBrowser2.DocumentCompleted += (s, e) => { if (e.Url.AbsolutePath != (s as WebBrowser).Url.AbsolutePath) { return; } // Do stuff } 

Cependant, cela ne semble toujours pas fonctionner. Est-ce que je fais quelque chose de mal ou est-ce syntaxiquement correct et il y a une autre erreur dans mon code?

DocumentComplete peut être déclenché plusieurs fois pour plusieurs raisons (frames, ajax, etc.). En même temps, pour un document particulier, l’événement window.onload ne sera déclenché qu’une seule fois. Donc, vous pouvez peut-être faire votre traitement sur window.onload . Je viens de répondre à une question connexe sur la façon dont cela peut être fait.

J’utilise ceci (d’une réponse sur SO à une question similaire):

 void BrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath) return; //The page has finished loading. } 

Il suffit de vérifier que e.Url.AbsolutePath correspond à l’URL à laquelle vous avez accédé.

if (e.Url.AbsolutePath == TheActualURLSsortingng) {// Le téléchargement de votre page actuelle est complet}