在VB.NET Webbrowser控件中检测Javascript html页面修改

时间:2010-07-23 08:03:50

标签: vb.net javascript-events

我的VB.NET代码应该执行第三方Javascript代码以尝试填写并提交表单。这个过程包括五个步骤,当所有步骤分开时(即在5个单独的连续按钮点击后面),我已经能够提交表格。现在,我想要的是一个按钮来处理所有五个步骤。

问题是表单最初只在调用“webbrowser.Navigate”命令后出现,该命令显然修改了页面的HTML代码。我似乎无法检测Javascript何时完成加载新HTML以填写和提交表单。我已经尝试了一个计时器控件来等待某个HTML元素ID出现,但是徒劳无功。

之前已经以不同的形式提出过这个问题,但至少我从之前的答案中找不到多少帮助:

InvalidCastException with WebBrowser.IsBusy or ReadyState (VB .NET)

Detect when AJAX changes HTML in a DIV in WebBrowser

http://www.techtalkz.com/vb-net/374234-vb-net-webbrowser-control-how-capture-javascript-events-statusbar-changed-mouseclick-etc.html

请帮帮我。

1 个答案:

答案 0 :(得分:1)

嗯,这是它在软件行业正常运作的方式:只有在你向别人解释问题之后,你是否能够充分理解它 - 并自己解决它。

问题在于我没有使用System.Windows.Forms.Timer(),而是使用另一个(不太合适的)计时器类来跟踪HTML代码中的更改。这就是Application.DoEvents()无效的原因。使用System.Windows.Forms.Timer(),我能够创建一个Timer.Tick事件,该事件跟踪表单提交的阶段(在我的示例中为1-5)并尝试在Try-中执行所需的Javascript命令抓住建筑。如果捕获到异常,则执行Application.DoEvents(),并且计时器确保尝试再次执行相同的命令。

这似乎对我有用。