如何向 WebBrowser 控件传递数据或从 WebBrowser 控件传递数据?

Jon*_*ory 2 c# cookies winforms

我有一个基本的“包装”WinForms 应用程序,它有一些基本控件和一个 WebBrowser 控件(System.Windows.Forms.WebBrowser)。它链接到一个 Web 服务,该服务完成我的应用程序的所有实际“工作”。

出现了在应用程序之间传递一些基本数据的需求。其中一些可以通过使用 DocumentCompleted/Naviged 事件并使用 URL 属性来查看加载的页面并将请求重定向到其他地方来实现。

然而,我正在努力弄清楚如何传递不易包含在 URL 中的数据。

是否有办法在请求中设置 cookie,或者至少从响应中访问 c​​ookie?

Ari*_*lam 5

您可以通过从传递的对象调用方法(如ObjectForScripting )来传递和获取数据。尝试这个-

[ComVisible(true)]
public class MyScriptingClass{
    private string SomeData;
    public string GetSomeData(){
       return SomeData + " Something";
    }
    public void SetSomeData(string some){
       SomeData = some;
    }
}
Run Code Online (Sandbox Code Playgroud)

并设置webBrowser 控件的ObjectForScripting属性 -

webBrowser.ObjectForScripting = new MyScriptingClass();
Run Code Online (Sandbox Code Playgroud)

现在,在您的 javascript 代码中调用这样的方法 -

var someVarFromJs = window.external.GetSomeData();
window.external.SetSomeData("Something to set");
Run Code Online (Sandbox Code Playgroud)