WebBrowser.ObjectForScripting WebBrowser.ObjectForScripting WebBrowser.ObjectForScripting WebBrowser.ObjectForScripting Property


WebBrowser コントロールに表示される Web ページ内のスクリプト コードからアクセスできるオブジェクトを取得または設定します。Gets or sets an object that can be accessed by scripting code that is contained within a Web page displayed in the WebBrowser control.

 property System::Object ^ ObjectForScripting { System::Object ^ get(); void set(System::Object ^ value); };
public object ObjectForScripting { get; set; }
member this.ObjectForScripting : obj with get, set
Public Property ObjectForScripting As Object


スクリプト コードから使用できるようにするオブジェクト。The object being made available to the scripting code.


このプロパティの設定時に指定された値が、パブリックではない型のインスタンスです。The specified value when setting this property is an instance of a non-public type.

または-or- このプロパティの設定時に指定された値が、COM 参照できない型のインスタンスです。The specified value when setting this property is an instance of a type that is not COM-visible. 詳細については、「IsTypeVisibleFromCom(Type)」を参照してください。For more information, see IsTypeVisibleFromCom(Type).

次のコード例は、使用する方法を示します、ObjectForScriptingプロパティ。The following code example demonstrates how to use the ObjectForScripting property. この例で、ObjectForScriptingプロパティが現在のフォームに設定します。In the example, the ObjectForScripting property is set to the current form.

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

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public class Form1 : Form
    private WebBrowser webBrowser1 = new WebBrowser();
    private Button button1 = new Button();

    public static void Main()
        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;
        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>" +

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

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

Imports System
Imports System.Windows.Forms
Imports System.Security.Permissions

<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
<System.Runtime.InteropServices.ComVisibleAttribute(True)> _
Public Class Form1
    Inherits Form

    Private webBrowser1 As New WebBrowser()
    Private WithEvents button1 As New Button()

    <STAThread()> _
    Public Shared Sub Main()
        Application.Run(New Form1())
    End Sub

    Public Sub New()
        button1.Text = "call script code from client code"
        button1.Dock = DockStyle.Top
        webBrowser1.Dock = DockStyle.Fill
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
        Handles Me.Load

        webBrowser1.AllowWebBrowserDrop = False
        webBrowser1.IsWebBrowserContextMenuEnabled = False
        webBrowser1.WebBrowserShortcutsEnabled = False
        webBrowser1.ObjectForScripting = Me
        ' 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>" & _
    End Sub

    Public Sub Test(ByVal message As String)
        MessageBox.Show(message, "client code")
    End Sub

    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button1.Click

        webBrowser1.Document.InvokeScript("test", _
            New String() {"called from client code"})

    End Sub

End Class


このプロパティを使用してホストされている Web ページ間の通信を有効にする、WebBrowserコントロールとアプリケーションを含む、WebBrowserコントロール。Use this property to enable communication between a Web page hosted by the WebBrowser control and the application that contains the WebBrowser control. このプロパティでは、ダイナミック HTML (DHTML) コード、クライアント アプリケーション コードを統合することができます。This property lets you integrate dynamic HTML (DHTML) code with your client application code. このプロパティとして Web ページのスクリプトで使用できる、指定されたオブジェクト、window.externalホストへのアクセスを提供する組み込みの DOM オブジェクトであるオブジェクト。The object specified for this property is available to Web page script as the window.external object, which is a built-in DOM object provided for host access.

そのパブリック プロパティとメソッドのスクリプト コードで使用可能にするを COM から参照できるオブジェクトにこのプロパティを設定することができます。You can set this property to any COM-visible object for which you want its public properties and methods available to scripting code. マークすることによって COM 参照可能クラスを行うことができます、ComVisibleAttributeします。You can make a class COM-visible by marking it with the ComVisibleAttribute.

クライアント アプリケーション コードから Web ページで定義されている関数を呼び出すには、使用、HtmlDocument.InvokeScriptのメソッド、HtmlDocumentオブジェクトから取得することができます、Documentプロパティ。To call functions defined in your Web page from your client application code, use the HtmlDocument.InvokeScript method of the HtmlDocument object you can retrieve from the Document property.


このコントロールを使用する即時呼び出し元。for immediate callers to use this control. 要求値: LinkDemand;[NIB:名前付き権限セット](https://msdn.microsoft.com/library/08250d67-c99d-4ab0-8d2b-b0e12019f6e3):FullTrustします。Demand value: LinkDemand; [NIB: Named Permission Sets](https://msdn.microsoft.com/library/08250d67-c99d-4ab0-8d2b-b0e12019f6e3): FullTrust.