Freigeben über


WebBrowser.ObjectForScripting Eigenschaft

Definition

Ruft ein Objekt ab, auf das über Skriptcode zugegriffen werden kann, der sich in einer im WebBrowser-Steuerelement angezeigten Webseite befindet, oder legt dieses fest.

public:
 property System::Object ^ ObjectForScripting { System::Object ^ get(); void set(System::Object ^ value); };
[System.ComponentModel.Browsable(false)]
public object ObjectForScripting { get; set; }
[<System.ComponentModel.Browsable(false)>]
member this.ObjectForScripting : obj with get, set
Public Property ObjectForScripting As Object

Eigenschaftswert

Object

Das Objekt, das dem Skriptcode verfügbar gemacht wird.

Attribute

Ausnahmen

Der beim Festlegen dieser Eigenschaft angegebene Wert ist eine Instanz eines nicht öffentlichen Typs.

- oder - Der beim Festlegen dieser Eigenschaft angegebene Wert ist eine Instanz eines nicht für COM sichtbaren Typs. Weitere Informationen finden Sie unter IsTypeVisibleFromCom(Type).

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie die ObjectForScripting Eigenschaft verwendet wird. Im Beispiel wird die ObjectForScripting Eigenschaft auf das aktuelle Formular festgelegt.

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" });
    }
}
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.EnableVisualStyles()
        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
        Controls.Add(webBrowser1)
        Controls.Add(button1)
    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>" & _
            "</body></html>"
    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

Hinweise

Verwenden Sie diese Eigenschaft, um die Kommunikation zwischen einer Webseite zu ermöglichen, die WebBrowser vom Steuerelement gehostet wird, und der Anwendung, die das WebBrowser Steuerelement enthält. Mit dieser Eigenschaft können Sie dynamischen HTML-Code (DHTML) in Ihren Clientanwendungscode integrieren. Das für diese Eigenschaft angegebene Objekt ist für das Webseitenskript als window.external Objekt verfügbar, das ein integriertes DOM-Objekt ist, das für den Hostzugriff bereitgestellt wird.

Sie können diese Eigenschaft auf ein beliebiges COM-sichtbares Objekt festlegen, für das ihre öffentlichen Eigenschaften und Methoden für Skriptcode verfügbar sein sollen. Sie können eine Klasse COM-sichtbar machen, indem Sie sie mit der ComVisibleAttribute.

Verwenden Sie die Methode des Objekts, das HtmlDocument Sie aus der Document Eigenschaft abrufen können, um funktionen aufzurufen, die HtmlDocument.InvokeScript in Ihrer Webseite von Ihrem Clientanwendungscode definiert sind.

Gilt für

Siehe auch