DotNetBrowser проверяет, видим ли элемент - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь реализовать следующую функцию 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 голосов
/ 15 октября 2019

Что касается получения функции 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 не позволяет передавать объекты API DOM в JavaScipt - .NET Bridge с автоматическим преобразованием. В описанном случае я бы порекомендовал найти нужный элемент с помощью кода JavaScript.

...