Udostępnij za pośrednictwem


WebBrowser.ObjectForScripting Właściwość

Definicja

Pobiera lub ustawia obiekt, do którego można uzyskać dostęp, wykonując skrypty kodu znajdującego się na stronie sieci Web wyświetlanej w kontrolce WebBrowser .

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

Wartość właściwości

Object

Obiekt udostępniany kodowi skryptowemu.

Atrybuty

Wyjątki

Określona wartość podczas ustawiania tej właściwości jest wystąpieniem typu innego niż publiczny.

-lub- Określona wartość podczas ustawiania tej właściwości jest wystąpieniem typu, które nie jest widoczne dla modelu COM. Aby uzyskać więcej informacji, zobacz IsTypeVisibleFromCom(Type).

Przykłady

W poniższym przykładzie kodu pokazano, jak używać ObjectForScripting właściwości . W tym przykładzie ObjectForScripting właściwość jest ustawiona na bieżący formularz.

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

Uwagi

Ta właściwość umożliwia komunikację między stroną sieci Web hostowaną przez kontrolkę WebBrowser a aplikacją zawierającą kontrolkę WebBrowser . Ta właściwość umożliwia integrację dynamicznego kodu HTML (DHTML) z kodem aplikacji klienckiej. Obiekt określony dla tej właściwości jest dostępny dla skryptu strony sieci Web jako window.external obiektu, który jest wbudowanym obiektem DOM udostępnionym na potrzeby dostępu do hosta.

Tę właściwość można ustawić na dowolny obiekt widoczny dla modelu COM, dla którego mają być dostępne jego właściwości publiczne i metody skryptów. Klasę COM można uwidocznić, oznaczając ją znakiem ComVisibleAttribute.

Aby wywołać funkcje zdefiniowane na stronie sieci Web z kodu aplikacji klienckiej, użyj HtmlDocument.InvokeScript metody HtmlDocument obiektu, którą można pobrać z Document właściwości .

Dotyczy

Zobacz też