locked
Récuperer la taille du contenu d'un Webbrowser RRS feed

  • Question

  • Bonjour,

    J'ai besoin de récupérer la taille du contenu html que j'ai passé à un controle webbrowser.

    Pour ce faire j'ai injecté du javascript à mon contenu pour qu'il me renvoi la valeur de scrollHeight sur la méthode onLoad du body.

    Tout marche à peu pret bien sur émulateur, mais une fois sur Lumia 620, si le contenu HTML contient des “ et des <p> il va me renvoyer des hauteurs absurde, et pas toujours la même alors que le contenu ne change pas...

    Une idée de comment comprendre ou contourner le problème?

    Voici le code que j'utilise (à noter que la présence de la balise <!doctype html> semble être une des sources du problème mais qu'elle m'est nécessaire).

            private void Button_Click(object sender, RoutedEventArgs e)
            {
    		MyBrowser.NavigateToString(getHtml());
    	}
    
    
      	private string getHtml()
            { 
                var l_html = "<!doctype html><head>" +
                "<script> function getDocHeight() { var elem = document.getElementById('mycontent'); window.external.Notify(elem.scrollHeight + ''); }</script>" +
                "</head><body onLoad=\'getDocHeight()\'><div id=\'mycontent\'>";
    
                for (int i = 0; i < 100; i++)
                {
                    //l_html +=  i + "asdfg</br>";// OK - 6428
                    //l_html +=  i + "“asdfg“</br>";//OK - 2828 ?????
                    //l_html += "<p> " + i + "asdfg</p>";//OK - 8012
                    l_html += "<p> " + i + "“asdfg“</p>";//NOK 867 / 1846 ?????
                }
    
                l_html += "</div></body>";
    
                return l_html;
            }

    jeudi 29 août 2013 09:10

Réponses

  • Merci pour la réponse mais je n'ai pas accès a Document depuis mon WebBrowser, j'ai cependant résolu le problème en rajoutant un timer javascript entre le moment ou la page était considéré comme chargé (événement onLoad du Body) et le moment ou je récuperais la taille du contenu.

    private string getHtml()
            {
                var l_html = "<!doctype html><head>" +
                "<script> function getDocHeight() { var elem = document.getElementById('mycontent'); window.external.Notify(elem.scrollHeight + ''); StopInterval(myVar); }" +
                " function toto() { myVar = setInterval(function(){getDocHeight()},500); }"+
                "</script>" +
                "</head><body onLoad=\'toto()\'><div id=\'mycontent\'>";
    
                for (int i = 0; i < 100; i++)
                {
                    l_html += "<p> " + i + "“asdfg“</p>";
                }
    
                l_html += "</div></body>";
    
                return l_html;
            }


    mardi 3 septembre 2013 08:12

Toutes les réponses

  • Bonjour

    Essayez de récupérer la taille de votre page HTML avec :

    myWebBrowser.Document.ScrollRectangle.Size

    Cordialement,

    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 30 août 2013 05:44
  • Bonjour

    Un petit retour SVP?

    Merci,

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 3 septembre 2013 07:41
  • Merci pour la réponse mais je n'ai pas accès a Document depuis mon WebBrowser, j'ai cependant résolu le problème en rajoutant un timer javascript entre le moment ou la page était considéré comme chargé (événement onLoad du Body) et le moment ou je récuperais la taille du contenu.

    private string getHtml()
            {
                var l_html = "<!doctype html><head>" +
                "<script> function getDocHeight() { var elem = document.getElementById('mycontent'); window.external.Notify(elem.scrollHeight + ''); StopInterval(myVar); }" +
                " function toto() { myVar = setInterval(function(){getDocHeight()},500); }"+
                "</script>" +
                "</head><body onLoad=\'toto()\'><div id=\'mycontent\'>";
    
                for (int i = 0; i < 100; i++)
                {
                    l_html += "<p> " + i + "“asdfg“</p>";
                }
    
                l_html += "</div></body>";
    
                return l_html;
            }


    mardi 3 septembre 2013 08:12