WebBrowser.ObjectForScripting 属性

定义

获取或设置一个对象,该对象可由显示在 WebBrowser 控件中的网页所包含的脚本代码访问。

C#
[System.ComponentModel.Browsable(false)]
public object ObjectForScripting { get; set; }

属性值

Object

可用于脚本代码的对象。

属性

例外

设置该属性时指定的值为非公共类型的实例。

  • 或 - 设置该属性时指定的值为非 COM 可见的类型的实例。 有关详细信息,请参阅 IsTypeVisibleFromCom(Type)

示例

下面的代码示例演示如何使用 ObjectForScripting 该属性。 在此示例中,该 ObjectForScripting 属性设置为当前窗体。

C#
using System;
using System.Windows.Forms;
using System.Security.Permissions;

[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public class Form1 : Form
{
    private WebBrowser webBrowser1 = new WebBrowser();
    private Button button1 = new Button();

    [STAThread]
    public static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }

    public Form1()
    {
        button1.Text = "call script code from client code";
        button1.Dock = DockStyle.Top;
        button1.Click += new EventHandler(button1_Click);
        webBrowser1.Dock = DockStyle.Fill;
        Controls.Add(webBrowser1);
        Controls.Add(button1);
        Load += new EventHandler(Form1_Load);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        webBrowser1.AllowWebBrowserDrop = false;
        webBrowser1.IsWebBrowserContextMenuEnabled = false;
        webBrowser1.WebBrowserShortcutsEnabled = false;
        webBrowser1.ObjectForScripting = this;
        // Uncomment the following line when you are finished debugging.
        //webBrowser1.ScriptErrorsSuppressed = true;

        webBrowser1.DocumentText =
            "<html><head><script>" +
            "function test(message) { alert(message); }" +
            "</script></head><body><button " +
            "onclick=\"window.external.Test('called from script code')\">" +
            "call client code from script code</button>" +
            "</body></html>";
    }

    public void Test(String message)
    {
        MessageBox.Show(message, "client code");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        webBrowser1.Document.InvokeScript("test",
            new String[] { "called from client code" });
    }
}

注解

使用此属性可以启用控件托管 WebBrowser 的网页与包含 WebBrowser 控件的应用程序之间的通信。 此属性允许将动态 HTML (DHTML) 代码与客户端应用程序代码集成。 为此属性指定的对象可用于网页脚本作为 window.external 对象,它是为主机访问提供的内置 DOM 对象。

可以将此属性设置为希望其公共属性和方法可用于编写代码的任何 COM 可见对象。 可以通过使用 .. ComVisibleAttribute标记类来使类 COM 可见。

若要从客户端应用程序代码调用网页中定义的函数,请使用HtmlDocument.InvokeScript可从属性中检索Document的对象的方法HtmlDocument

适用于

产品 版本
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1, 5, 6, 7

另请参阅