如何在WebBrowser控件中捕获POST的结果?

本文关键字:POST 结果 WebBrowser 控件 | 更新日期: 2023-09-27 18:01:25

我有一个带有WebBrowser控件的Winforms表单。

我已经弄清楚如何通过将c#类的实例附加到ObjectForScripting属性来连接c#代码到Web浏览器控件中的Javascript,像这样:

public partial class Browser : Form
{
    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        webBrowser1.ObjectForScripting = new ScriptInterface();
    }
}
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisible(true)]
public class ScriptInterface
{
    public void DoSomething(string data)
    {
        // Do something interesting with data here
    }
}

…然后像这样在Javascript中调用它:

<button onclick=window.external.DoSomething('with this')/>

我还没有弄清楚的是如何从WebBrowser控件中的表单捕获POST操作的结果,并在我的c#代码中使用它。

如何在WebBrowser控件中捕获POST的结果?

您可以使用jQuery post代替表单post。

假设您的表单id为myForm:

$( "#myForm" ).submit(function( event ) {     
  // Stop form from submitting normally
  event.preventDefault();
  // Get some values from elements on the page:
  var $form = $(this),
  var term = $form.find("input[name='s']").val(),
  var url = $form.attr("action");
  // Send the data using post
  var posting = $.post( url, { s: term } )
      .done(function(data) {
          //Pass the response back to your code
          window.external.DoSomething(data);
      });
});