0

请我在“if (webBrowser1.DocumentCompleted);”下面的代码上需要帮助

这是我单击按钮后想要发生的事件:1.)检索网页 2.)如果网页已完成加载,则填写表单属性

我被困在第 2 位。加载后如何做出与页面有关的“IF”语句

   private void button1_Click(object sender, EventArgs e)
 {
webBrowser1.Navigate("costco.com/Common/Login.aspx?cm_re=1_en-_-Top_Right_Nav-_-Top_login&topnav=&whse=BC&lang=en-US")


  if (webBrowser1.DocumentCompleted);
   webBrowser1.Document.GetElementById("_ctl0_EmailAddress").SetAttribute("value", "RogerWilliams");

}

“if (webBrowser1.DocumentCompleted);”有错误

4

4 回答 4

1

DocumentCompleted不是布尔属性,它是一个异步发生的事件。您应该创建一个回调,一旦事件被触发,它将被调用。

private void button1_Click(object sender, EventArgs e)
{
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(OnDocumentCompleted);
    webBrowser1.Navigate("costco.com/Common/Login.aspx?cm_re=1_en-_-Top_Right_Nav-_-Top_login&topnav=&whse=BC&lang=en-US");
}

private void OnDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    ((WebBrowser)sender).Document.GetElementById("_ctl0_EmailAddress").SetAttribute("value", "RogerWilliams");
}
于 2012-04-14T00:39:03.887 回答
0

您也可以在 jquery 中使用 ajax 来执行此操作,如下所示:

 $('#yourlink').click(function() {
    $.ajax({
      url: 'costco.com/Common/Login.aspx?cm_re=1_en-_-Top_Right_Nav-_-Top_login&topnav=&whse=BC&lang=en-US',
      success: function(data) {
        $('#_ctl0_EmailAddress').val('RogerWilliams');
      }
    });
  });
于 2012-04-14T00:39:51.110 回答
0

谢达尔的回答是正确的。DocumentCompleted 是一个事件处理程序,在浏览器完成加载文档时调用。但是,如果您明确需要获取文档的当前状态,则可以使用 WebBrowser.ReadyState 并检查文档是否已加载。以下是不同 ReadyState 属性的链接:

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowserreadystate.aspx

于 2012-04-14T02:46:29.677 回答
-1

去掉if语句末尾多余的分号:

if (webBrowser1.DocumentCompleted)
   webBrowser1.Document.GetElementById("_ctl0_EmailAddress").SetAttribute("value", "RogerWilliams");
于 2012-04-14T00:37:08.737 回答