WebView2 - получить атрибут

Я пытаюсь понять архитектуру WebView2. С помощью WebBrowser я получал атрибут из результата, возвращаемого GetElementById, следующим образом: Document.GetElementById("DropDownList").GetAttribute("selectedIndex")

Я знаю, что ExecuteScriptAsync в WebView2 может запускать javascript и возвращать результат в виде строки. Однако похоже, что он не знает, как получить атрибут из элемента. Приведенный ниже код возвращает значение NULL. Хотя getElementById возвращает правильный результат.
ExecuteScriptAsync("document.getElementById('DropDownList').getAttribute('selectedIndex')")

Мой синтаксис неверен? Как получить атрибут в WebView2 ?. Надо ли писать функцию в скрипте и вызывать ее с хоста?

Спасибо


person Zimo    schedule 01.04.2021    source источник
comment
Ваш JavaScript тоже никогда не работал с Webbrowser. -1 от меня.   -  person darbid    schedule 02.04.2021
comment
@darbid: На самом деле в старом WebBrowser вы использовали C # для доступа к dom, а не javascript (показанный код - C #).   -  person Poul Bak    schedule 03.04.2021
comment
Я имел в виду следующее: «Хотя getElementById возвращает правильный результат».   -  person darbid    schedule 04.04.2021


Ответы (2)


HTMLSelectElement не имеет атрибута с именем'selectedIndex '. У него есть СВОЙСТВО, называемое selectedIndex.

Назовите это так от WebView2:

await ExecuteScriptAsync("document.getElementById('DropDownList').selectedIndex");
person Poul Bak    schedule 01.04.2021
comment
Потрясающие! это сработало! Спасибо!. Вы очень хорошо разбираетесь в WebView2. - person Zimo; 01.04.2021
comment
Многие люди не понимают, что такое атрибуты javascript и свойства. Простое правило: атрибуты могут быть записаны непосредственно в теге html, например id, name и т. Д. - person Poul Bak; 02.04.2021

Вам нужно дождаться этого метода. см. ссылку

string res = await ExecuteScriptAsync("document.getElementById('DropDownList').getAttribute('selectedIndex')")
person darbid    schedule 01.04.2021
comment
да, уже жду этого метода. Как я объяснил, getElementById возвращает значение, но если я добавлю getAttribute, он вернет значение null. - person Zimo; 01.04.2021
comment
Тогда у вас проблема с JavaScript. Перейдите на сайт, откройте инструменты разработчика, перейдите в консоль, вставьте свой код JavaScript и нажмите клавишу ВВОД. Что происходит? - person darbid; 01.04.2021