Получить высоту класса div

c# css html-agility-pack uwp

Вопрос

Есть ли способ получить высоту class на C# ? Я использую HTMLAgilitPack для получения узлов. Вот мой код.

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

Изменить: вот изображение: Вот На изображении я могу показаться, что это высота. Есть ли способ получить эту высоту программно? Я хочу реализовать его в scrollviewer. Я отключил полосы прокрутки браузеров, чтобы использовать мой. И мне нужно установить высоту прокрутки, чтобы она соответствовала форме ...

Принятый ответ

Это решение, использующее безглавой браузер Watin для получения высоты элемента DOM с помощью встроенного javascript.

Сначала установите Watin с помощью Visual Studio Nuget Package Manager Console , выполнив:

PM> Install-Package WatiN

После успешной установки браузера Watin без браузера вы можете использовать его таким образом, чтобы перейти на страницу и запустить простой javascript для извлечения высоты элемента:

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

Вот захват экрана рабочей кнопки, выбирающей высоту:

Скриншот

РЕДАКТИРОВАТЬ

Помните, что это тест, и вы должны реализовать некоторую обработку ошибок как для объектов C # Watin, так и для встроенного javascript , который оценивается.

ОБНОВИТЬ

Вот как это сделать, используя 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/"));
}

Мой рабочий экран:

Захват экрана WebView


Популярные ответы

Я так не думаю, так как высота вычисляется браузером.

вам придется сначала перенести этот тип HTML, а затем вычислить его.


Обновление: если вы хотите получить высоту с помощью JavaScript, то это легко.

Получите div, который обертывает ваше представление, что вы хотите использовать свой 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);
};


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему