WebBrowser.ObjectForScripting Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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 .