如何从C#.Net Webbrowser对象访问javascript变量

How can you access javascript variables from a C#.Net Webbrowser object?

本文关键字:对象 访问 javascript 变量 Webbrowser Net      更新时间:2023-09-26

我想从我的C#.Net Winform应用程序创建一个Webbrowser.Net对象,然后能够访问javascript变量。

基本上,我想在我的主Winform应用程序中根据设置javascript变量的一些用户交互来采取一些操作。

关于如何调用Webbrowser对象来执行此操作,有什么建议吗?

注意,我确实查看了允许您访问DOM的Document属性,但不了解如何/如果可以使用它来访问javascript变量。

Dan

在WinForms浏览器中,使用ObjectForScripting属性处理WinForms应用程序和WebBrowserDocument之间的双向通信。

您可以通过Document对象从C#调用javascript成员:

 // C# code
 webBrowser1.Document.InvokeScript("test",
        new String[] { "called from client code" });

ObjectForScripting指定为

// C# code
webBrowser1.ObjectForScripting = obj;

似乎允许托管的javascript调用obj的成员,例如

// javascript code
window.external.SomeMethod('called from script code');
// executes obj.SomeMethod(string) in C#

免责声明:我只使用过WPF网络浏览器,所以我自己还没有验证过以上内容

使用CeSharp,这是一个Chromium嵌入式框架,可以对Web浏览器组件进行更多控制。

开始

  • 启动VS项目
  • 如果您正在执行Winforms C#应用程序,请打开nuget控制台并执行:Install-Package CefSharp.WinForms
  • 重新启动Visual studio并重新加载项目

开始使用CefSharp代码的示例

  • 从工具箱中向表单添加一个toolStripContainer,然后使用以下示例代码加载cefsharp浏览器组件。

    公共窗体1(){InitializeComponent();var browser=新ChromiumWebBrowser("http://localhost:1071/");

      browser.Dock = DockStyle.Fill;
      toolStripContainer1.ContentPanel.Controls.Add(browser);
    

    }

这应该让你开始,为了与C#中的JS对话,你需要使用EvaluateScript接口。

请查看以下资源。https://github.com/cefsharp/CefSharp/issues/368