【问题标题】:Detecting Javascript html page modification in VB.NET Webbrowser control检测 VB.NET Webbrowser 控件中的 Javascript html 页面修改
【发布时间】:2011-03-19 23:37:34
【问题描述】:

我的 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

请帮帮我。

【问题讨论】:

    标签: javascript vb.net dom-events


    【解决方案1】:

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

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

    这似乎对我有用。

    【讨论】:

      猜你喜欢
      • 2012-07-14
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2011-02-16
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多