.net中的WebBrowser控件如何处理ObjectForScripting
How WebBrowser control in .net handles ObjectForScripting
据我所知,我们可以从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>
吸引我的问题是
- 为什么我们需要ComVisible对于我们将要用作objectForScripting的对象的类为true
- Javascript对象window.external如何具有与objectForScripting中相同的方法
- 他们如何处理跨语言类型转换
我想知道为什么这么长时间没有人回答。所有问题的答案都是COM组件对象模型。
Windows(使用COM)为一个程序(exe)中的类和函数提供了在exe之外可访问的功能。
所以
1) 为什么我们需要ComVisible对于我们将要用作objectForScripting的对象的类为true?
->这个命令告诉windows使类及其方法对web浏览器可见。
2) Javascript对象window.external如何具有与objectForScripting中相同的方法?
->javascript正在调用在上面的答案中可见的类的方法。
3) 他们如何处理跨语言类型转换?
->COM在内部处理这些类型,因此可以从另一种编程语言调用一种程序语言中的方法。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- keyup事件处理程序更改焦点不适用于快速键入
- 如何使用jquery处理php循环通过元素
- angular.js没有'无法在PhoneGap中处理视图标记
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 提示使用服务器端事件处理程序激活JavaScript
- javascript:如何在antlr生成的Lexer中进行错误处理
- 如何编写一个具有公共标头的批处理
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 如何处理node.js节点mongodb中的连接和查询队列
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何处理10页以上的静态页眉/页脚
- 将事件处理程序绑定到任何可能的事件
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- python到“;流“;字典处理
- 使用javascript进行实时图像处理
- 导入jQuery脚本获胜'我不处理html文件
- Javascript无法处理表单提交
- 在承诺链中处理早期回报的最佳方式
- 正在将事件处理程序添加到不存在的类