获得div类的高度

c# css html-agility-pack uwp

有没有办法在C#上获得class的高度?我正在使用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中实现它。我已经禁用了浏览器滚动条,所以我可以使用我的。我需要设置scrollviewers高度以适应表单...

一般承认的答案

这是使用无头浏览器Watin使用内联javascript获取DOM元素高度的解决方案。

首先华廷使用Visual Studio NuGet包管理器控制台通过执行安装:

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实现一些错误处理。

UPDATE

以下是使用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获得高度,那么它很容易。

获取包含您想要使用slimscroll的视图的div

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

许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因