Holen Sie sich Div-Klassenhöhe

c# css html-agility-pack uwp

Frage

Gibt es eine Möglichkeit, die Höhe einer class auf C# ? Ich verwende HTMLAgilitPack , um die Knoten zu erhalten. Hier ist mein Code.

private async void GetCldInfos()
    {
        string sURL = @"https://m.investing.com/economic-calendar/";
        using (HttpClient clientduplicate = new HttpClient())
        {
            clientduplicate.DefaultRequestHeaders.Add("User-Agent",
                "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident / 6.0)");

            using (HttpResponseMessage responseduplicate = await clientduplicate.GetAsync(sURL))
            using (HttpContent contentduplicate = responseduplicate.Content)
            {
                try
                {
                    string resultduplicate = await contentduplicate.ReadAsStringAsync();

                    var websiteduplicate = new HtmlDocument();
                    websiteduplicate.LoadHtml(resultduplicate);
                    var News = websiteduplicate.DocumentNode.Descendants("div").Where(o => o.GetAttributeValue("class", "") == "js-economic-calendar").Single();
                    //get height here
                }
                catch (Exception ex1)
                {
                    throw ex1.InnerException;
                }
            }
        }
    }

Edit: hier ist ein Bild: Hier Im Bild kann ich scheinen, dass es Höhe ist. Gibt es eine Möglichkeit, diese Höhe programmgesteuert zu erhalten? Ich möchte es in einem Scrollviewer implementieren. Ich habe die Browser-Bildlaufleisten deaktiviert, damit ich meine verwenden kann. Und ich muss die scrollviewers Höhe anpassen, um die Form zu passen ...

Akzeptierte Antwort

Dies ist eine Lösung mit dem kopflosen Browser Wattin, um die Höhe eines DOM-Elements mit Inline-Javascript zu erhalten.

Installieren Sie zuerst Wattin mit der Visual Studio Nuget Package Manager-Konsole, indem Sie Folgendes ausführen:

PM> Install-Package WatiN

Nach der erfolgreichen Installation des Headless-Browsers von Wattin können Sie ihn wie folgt verwenden, um zu einer Seite zu navigieren und ein einfaches Javascript auszuführen, um die Höhe eines Elements abzurufen:

using WatiN.Core;
...

private void buttonGetElementHeight_Click(object sender, EventArgs e)
{
    WatiN.Core.Settings.Instance.MakeNewIeInstanceVisible = false;
    IE browser = new IE();

    browser.GoToNoWait("https://m.investing.com/economic-calendar/");
    browser.WaitUntilContainsText("Filters");

    var height = browser.Eval("document.getElementsByClassName('js-economic-calendar')[0].offsetHeight");
    labelResult.Text = String.Format("Element height is {0}px", height);

    browser.ForceClose();
}

Hier ist eine Bildschirmaufnahme der Arbeitsschaltfläche, die die Höhe abruft:

Bildschirmaufnahme

BEARBEITEN

Beachten Sie, dass dies ein Test ist und Sie eine Fehlerbehandlung für C # -Watin-Objekte und Inline-Javascript implementieren müssen, die ausgewertet werden.

AKTUALISIEREN

Windows.UI.Xaml.Controls.WebView Sie folgendermaßen vor, um Windows.UI.Xaml.Controls.WebView :

private async void webView1_LoadCompleted(object sender, NavigationEventArgs e)
{
    var offsetHeight = await webView1.InvokeScriptAsync("eval", new string[] {
        "document.getElementsByClassName('js-economic-calendar')[0].offsetHeight.toString()"
    });
    textBox.Text = offsetHeight;
}

private async void button_Click(object sender, RoutedEventArgs e)
{
    webView1.LoadCompleted += webView1_LoadCompleted;
    webView1.Navigate(new Uri("https://m.investing.com/economic-calendar/"));
}

Meine Arbeit Bildschirm erfassen:

WebView-Bildschirmaufnahme


Beliebte Antwort

Ich denke nicht, da die Höhe vom Browser berechnet wird.

Sie müssten diesen HTML-Typ zuerst vorrendern und dann berechnen.


Update: Wenn Sie bereit sind, die Höhe mit JavaScript zu erreichen, dann ist es einfach.

Holen Sie sich das Div, das Ihre Ansicht umhüllt, dass Sie Ihre Slimscroll verwenden möchten

function getsize() {
            var el = $('#divIdYouWantSize'),
//current eight of your div
               curHeight = el.height(),
//set div height using CSS style
               autoHeight = el.css('height', $(window).height() ).height();
//try animating the resize so it looks pretty
                el.height(curHeight).animate({ height: autoHeight }, 100);
};


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum