Ottieni altezza della classe div

c# css html-agility-pack uwp

Domanda

C'è un modo per ottenere l'altezza di una class su C# ? Sto usando HTMLAgilitPack per ottenere i nodi. Ecco il mio codice.

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;
                }
            }
        }
    }

Modifica: ecco un'immagine: Qui Nell'immagine posso sembrare trovare la sua altezza. C'è un modo per ottenere quell'altezza programmaticamente? Voglio implementarlo in un scrollviewer. Ho disabilitato le barre di scorrimento del browser in modo da poter utilizzare il mio. E ho bisogno di impostare l'altezza dello scrollviewer in modo che si adatti al modulo ...

Risposta accettata

Questa è una soluzione che utilizza il browser headless Watin per ottenere l'altezza di un elemento DOM usando javascript in linea.

Innanzitutto installa Watin utilizzando la console di Gestione pacchetti Nuget di Visual Studio eseguendo:

PM> Install-Package WatiN

Dopo la corretta installazione del browser headless di Watin, puoi usarlo in questo modo per navigare verso una pagina ed eseguire un semplice javascript per recuperare l'altezza di un elemento:

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();
}

Ecco una schermata del pulsante di lavoro che recupera l'altezza:

Cattura dello schermo

MODIFICARE

Fai attenzione che questo è un test e devi implementare una gestione degli errori per entrambi gli oggetti C # Watin e inline javascript che sono in fase di valutazione.

AGGIORNARE

Ecco come farlo usando 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/"));
}

La mia schermata di lavoro cattura:

Cattura schermo WebView


Risposta popolare

Io non la penso così, dato che l'altezza è calcolata dal browser.

dovresti prerender prima questo tipo di HTML quindi calcolarlo.


Aggiornamento: se sei disposto ad ottenere l'altezza usando JavaScript, è facile.

Prendi il div che avvolge la tua vista che vuoi usare il tuo slimscroll

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);
};


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché