如何从C#.Net Webbrowser对象访问javascript变量
How can you access javascript variables from a C#.Net Webbrowser object?
我想从我的C#.Net Winform应用程序创建一个Webbrowser.Net对象,然后能够访问javascript变量。
基本上,我想在我的主Winform应用程序中根据设置javascript变量的一些用户交互来采取一些操作。
关于如何调用Webbrowser对象来执行此操作,有什么建议吗?
注意,我确实查看了允许您访问DOM的Document属性,但不了解如何/如果可以使用它来访问javascript变量。
Dan
在WinForms浏览器中,使用ObjectForScripting
属性处理WinForms应用程序和WebBrowser
的Document
之间的双向通信。
您可以通过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
- 如何使用此从对象访问构造函数
- LokiJS与标准Javascript对象访问
- JavaScript子对象访问自己的值
- Javascript嵌套对象访问根级别
- 即使使用 angular.fromJson() 也无法从 json 对象访问字符串
- 从表单到 Ajax 的动态对象访问
- 将 NodeJS 模块范围变量作为对象访问
- 能够从Meteor中的辅助对象访问特定值
- 从JavaScript对象访问数据's数组成员变量
- 如何从 React 中的事件对象访问自定义属性
- 函数中的对象访问;不起作用
- 如何在javascript中从JSON对象访问数组
- 如何从C#.Net Webbrowser对象访问javascript变量
- Javascript中最快的类/对象访问/实例化是什么
- 覆盖对象访问 JavaScript
- 如何从 jquery 中的另一个对象访问在一个对象中声明的变量
- 从 JavaScript 对象访问变量
- 如何从范围对象访问数据到指令
- 从vue.js中的对象访问v-repeat-overarray中的属性
- jQuery:从具有一个类的多个实例的对象访问元素