#javascript #c# #webbrowser-control #webview2
Вопрос:
WebView2 не поддерживает DOM API, как WebBrowser. Чтобы использовать существующий код WebBrowser с WebView2 с минимальными изменениями, необходимо разработать HTMLElement (который используется WebBrowser DOM API для представления элемента DOM), например класс C#.
Чтобы реализовать HTMLElement, подобный классу (назовите его HtmlElement2), первым делом необходимо выделить идентификатор для каждого элемента DOM, которому требуется HtmlElement2 в коде C#. Вот два возможных метода (которые описывают введенный код js):
(1) Если элемент DOM (которому нужен объект C# shadow HtmlElement2) уже имеет идентификатор, передайте этот идентификатор в C#, если нет, выделите идентификатор, например число, и установите выделенный идентификатор для этого элемента. Минусами этого метода является модификация DOM, которая может вызвать проблемы.
(2) Создайте коллекцию, подобную хэш-карте, для каждого элемента DOM (для которого требуется теневой объект HtmlElement2 C#) выделите идентификатор в качестве ключа и поместите идентификатор и элемент в хэш-карту. Минусы этого метода-необходимость поддерживать объект коллекции js, который позже может быть довольно большим.
Я новичок в js. Что лучше для введенного кода js? Есть ли другие способы?