DotNetBrowser检查元素是否可见

时间:2019-10-04 15:22:16

标签: c# dotnetbrowser

我正在尝试实现以下JavaScript函数,以检查元素是否可见。问题是javascript变量为null,并且强制转换为AsFunction。

var element = node as DOMElement;
JSValue javascript = browser.ExecuteJavaScriptAndReturnValue("var KBrowserIsHidden = function (el) { " +
                "var style = window.getComputedStyle(el); " +
                "return (style.display === 'none' || style.visibility === 'hidden') " +
                "}" +
                "KBrowserIsHidden");
var hidden = Convert.ToBoolean(javascript.AsFunction().InvokeAndReturnValue(null, element));

1 个答案:

答案 0 :(得分:0)

关于获取javascript函数,请考虑分离函数定义并将其返回给C#端。示例源代码如下所示:

browser.ExecuteJavaScriptAndReturnValue("var KBrowserIsHidden = function (el) { " +
"var style = window.getComputedStyle(el); " +
"return (style.display === 'none' || style.visibility === 'hidden'); " +
"};");

JSValue javascript = browser.ExecuteJavaScriptAndReturnValue("KBrowserIsHidden;");

此外,请记住,DotNetBrowser不允许通过自动转换将DOM API对象传递给JavaScipt-.NET Bridge。在上述情况下,我建议您使用JavaScript代码查找所需的元素。