【发布时间】:2014-10-06 16:44:02
【问题描述】:
据我所知,我们可以从 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 中的方法相同?
- 他们如何处理跨语言类型转换?
【问题讨论】:
标签: javascript c# winforms