在网络浏览器控件中共享 javascript 和 VB .net 之间的变量

Sharing a variable between javascript and VB .net in webbrowser control

我有一个带有网络浏览器控件的 VB.Net 表单应用程序。我创建了一个 HTML5 页面作为字符串,并将其作为文档文本加载到网络浏览器中。这很好用。现在,如果用户与页面(实际上是使用 D3 的图表)交互,比如拖动一个项目,我已经更改了 javascript 变量,我希望将其传输到某种形式的存储,VB .Net 可以在 VB.Net 尝试下次重新加载页面时获取它。

Cookie 和本地存储在这种情况下不起作用,因为页面 运行 来自本地文件系统而不是服务器。然后页面中的javascript会给出未定义或空引用错误。

我不希望将变量传输到远程 mysql 服务器并在它变慢时取回它。我正在寻找任何在本地执行的解决方案。

经过一番研究,我找到了答案。这可以通过设置 webbrowser 控件的 ObjectForScripting 属性 来完成。这会将 windows 表单 class 公开给 html 页面上的 javascript。您必须设置 class 的权限以使其对 COM 可见。然后 JavaScript 可以使用 window.external 对象调用 class 中的任何函数或对象。

You could see the implementation in the following page

A very detailed explanation can be found in this page