Эквивалент JS eventListener в VB 2010 - PullRequest
1 голос
/ 18 июля 2011

У меня есть эта проблема: мне нужно иметь возможность отследить изменения в DOM-элементах на странице, которую я загружаю в элемент управления Visual Basic webBrowser.Обычно в JavaScript в Firefox я делал бы что-то вроде этого: element [0] .childNodes [1] .addEventListener ("DOMAttrModified", functionX, true);где element [0] - это элемент, который мне нужно отслеживать, а child [1] - 2-й дочерний элемент для этого элемента, у которого изменилось текстовое значение, которое мне нужно перехватить при его изменении, в то время как functionX - это функция / sub, которую я хочусрабатывать каждый раз, когда происходит изменение в элементе [0] .childNodes [1].

Я могу сделать это легко в JavaScript, но у меня ужасное время, когда я реализую это в Visual Basic 2010 в элементе управления веб-браузера, который я используюреализовать браузер.

Я знаю, что есть что-то вроде Dim del As New EventHandler (AddressOf Me.CallGlobalJSMethod), но у меня практически не получается реализовать это практически.Кто-нибудь имеет какие-либо идеи, как это можно сделать практически?

Обновление: я открываю страницу в элементе управления веб-браузера в VB2010 следующим образом: WebBrowser1.Navigate (address.Text), а затем отслеживать страницу.На этой веб-странице есть текстовое поле с идентификатором "ctrlid".Свойство text этого элемента управления периодически изменяется.Мне нужно поймать событие, когда изменения и реагировать на него.

1 Ответ

2 голосов
/ 10 августа 2011

Я задал этот вопрос 3 недели назад.Я тем временем выяснил ответ и документирую его здесь, на случай, если кому-то еще понадобится помощь.Проблема была с событием OnChange.Правильный метод триггера событий - OnPropertyChange для элемента управления веб-браузера, который запускает события при изменениях элементов, размещенных на его странице, на которой осуществляется переход.Это рабочий пример, который я привожу из разных форумов VB, где я задал тот же вопрос и завершил ответ:

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

   Dim doc As HtmlDocument = WebBrowser1.Document
   Dim aC As HtmlElement = doc.GetElementById("previewclock")
   Try
       If aC Is Nothing Then Return
       aC.AttachEventHandler("onpropertychange", AddressOf SomethingChanged)
   Catch
   End Try

, а затем отдельную подпрограмму, в которой обрабатывается событие «запущено»:

Private Sub SomethingChanged(ByVal sender As Object, ByVal e As EventArgs)
        'MsgBox("Event was captured!")
        Console.WriteLine(Now.ToLongTimeString & ":" & "Changed")
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...