gpt4 book ai didi

javascript - VB 2010 中等效的 JS eventListener

转载 作者:行者123 更新时间:2023-11-30 18:41:34 25 4
gpt4 key购买 nike

我遇到了这个问题:我需要能够捕获我在 Visual Basic webBrowser 控件中加载的页面中 DOM 元素的更改。通常在 Firefox 的 JavaScript 中我会做这样的事情: element[0].childNodes[1].addEventListener("DOMAttrModified", functionX, true);其中 element[0] 是我需要监视的元素,child[1] 是该元素的第二个子元素,它的文本值已更改,我需要在它更改时捕获它,而 functionX 是我想要的函数/子每当 element[0].childNodes[1] 发生变化时触发。

我可以在 JavaScript 中轻松完成此操作,但我在 Visual Basic 2010 中在用于实现浏览器的 Web 浏览器控件中实现此操作时遇到了麻烦。

我知道有像 Dim del As New EventHandler(AddressOf Me.CallGlobalJSMethod) 这样的东西,但我很难实际实现它。有谁知道如何实际做到这一点?

更新:我在 VB2010 的网络浏览器控件中打开一个页面,如下所示:WebBrowser1.Navigate(address.Text) 然后监视该页面。此网页上有一个 ID 为“ctrlid”的文本字段。此控件的文本属性会定期更改。我需要在发生变化时捕捉事件并对其使用react。

最佳答案

我 3 周前问过这个问题。与此同时,我确实找到了答案,并将其记录在此处,以防其他人需要帮助。问题出在 OnChange 事件上。对于 Web 浏览器控件,正确的事件触发方法是 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

关于javascript - VB 2010 中等效的 JS eventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6727836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com