【问题标题】:How WebBrowser control in .net handles ObjectForScripting.net 中的 WebBrowser 控件如何处理 ObjectForScripting
【发布时间】: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>

让我感兴趣的问题是

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

【问题讨论】:

    标签: javascript c# winforms


    【解决方案1】:

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

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

    所以

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

    ->这告诉窗口使类及其方法对网络浏览器可见。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      相关资源
      最近更新 更多