gpt4 book ai didi

javascript - .net 中的 WebBrowser 控件如何处理 ObjectForScripting

转载 作者:行者123 更新时间:2023-11-30 18:27:46 25 4
gpt4 key购买 nike

据我所知,我们可以从 Javascript 调用 C# 函数,它在 WebBrowser 控件中加载,下面的代码显示了我通常是如何做的。

Form1.cs

public partial class Form1 : Form{
private WebBrowser webBrowser1;
public ApplicationWindow(){
InitializeComponent();
WebBrowser webBrowser1 = new WebBrowser();
//some code follows
webBrowser1.ObjectForScripting = new ScriptManager();
this.webBrowser1.Url = new Uri("file:///d:/ui/application.html");
}
}
}

ScriptManager.cs

namespace WindowsFormsApplication10 {
[ComVisible(true)]
public class ScriptManager{
public string GetAllDomains(){
string result=null;
//does something;
return result;
}
}
}

application.html

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script>
$(document).ready(function () {
var result = window.external.GetAllDomains();
//it works but this is what puzzles me.
});
</script>

让我感兴趣的问题是

  1. 为什么我们需要将其对象用作 objectForScripting 的类的 ComVisible 为真?
  2. Javascript 对象 window.external 如何与 objectForScripting 中的方法相同?
  3. 他们如何处理跨语言类型转换?

最佳答案

我想知道为什么这么久没有人回答。您所有问题的答案是 COM - 组件对象模型。

Windows 正在为来自一个程序 (exe) 的类和函数提供能力(使用 COM),以便在 exe 外部访问。

所以

1) 为什么我们需要 ComVisible 对于我们要用作 objectForScripting 的对象的类为真?

-> 这会告诉 Windows 使该类及其方法对 Web 浏览器可见。

2) Javascript 对象 window.external 如何与 objectForScripting 中的方法相同?

-> javascript 正在调用上面答案中可见的类的方法。

3) 他们如何处理跨语言类型转换?

-> COM 在内部处理类型,因此可以从另一种编程语言调用一种编程语言中的方法。

关于javascript - .net 中的 WebBrowser 控件如何处理 ObjectForScripting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com