Comment puis-je détecter la fin du chargement d'un contrôle WebBrowser?
J'ai essayé d'utiliser les événements Naviguer et DocumentCompleted, mais les deux ont été soulevés à quelques reprises lors du chargement du document!
Comment puis-je détecter la fin du chargement d'un contrôle WebBrowser?
J'ai essayé d'utiliser les événements Naviguer et DocumentCompleted, mais les deux ont été soulevés à quelques reprises lors du chargement du document!
J'ai fait ce qui suit:
void BrowserDocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
return;
//The page is finished loading
}
La dernière page chargée a tendance à être celle sur laquelle vous avez navigué, cela devrait donc fonctionner.
À partir d' ici .
Ce qui suit devrait fonctionner.
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//Check if page is fully loaded or not
if (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete)
return;
else
//Action to be taken on page loading completion
}
Notez l'url dans DocumentCompleted peut être différent de celui de la navigation url en raison de transfert de serveur ou l'url de la normalisation (par exemple, vous accédez à www.microsoft.com et a obtenu http://www.microsoft.com dans documentcomplete)
Dans les pages sans images, cet événement se déclenche une seule fois après le chargement est terminé. Dans les pages avec plusieurs images, cet événement se déclenche pour chaque navigation cadre (note de navigation est pris en charge à l'intérieur d'un cadre, par exemple en cliquant sur un lien dans une image pourrait naviguer dans le cadre d'une autre page). Le plus haut niveau de la navigation image, ce qui peut ou peut ne pas être le top niveau du navigateur, les feux de la DocumentComplete finale de l'événement.
En code natif vous permettrait de comparer l'expéditeur de l'événement DocumentComplete pour déterminer si l'événement est le dernier événement dans la navigation ou pas. Toutefois, dans Windows Forms le paramètre sender n'est pas emballé par WebBrowserDocumentCompletedEventargs. Vous pouvez soit l' évier, le natif de l'événement pour obtenir la valeur du paramètre ou de vérifier la propriété readystate du navigateur ou de cadre de documents dans le DocumentCompleted gestionnaire d'événements pour voir si toutes les images sont dans l'état prêt.
Il y a un prolblem avec la readystate méthode comme si un gestionnaire de téléchargement est présente et que la navigation est un fichier téléchargeable, la navigation peut être annulée par le gestionnaire de téléchargement et le readystate ne deviendra pas complète.
J'ai eu le même problème de plusieurs DocumentCompleted
tiré des événements et essayé toutes les suggestions ci-dessus. Enfin, semble que dans mon cas ni IsBusy
de la propriété des œuvres de droite, ni de Url
de la propriété, mais l' ReadyState
semble être ce dont j'avais besoin, parce qu'il a le statut "Interactive" pendant le chargement des images multiples et il a le statut "terminé" uniquement après le chargement de la dernière. Donc, je sais que quand la page est complètement chargée, avec toutes ses composantes.
J'espère que cela peut aider les autres aussi :)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.