WebBrowser.ObjectForScripting 属性:取或设置一个对象,该对象可由显示在 WebBrowser 控件中的网页所包含的脚本代码访问。
使用该属性启用 WebBrowser 控件承载的网页与包含 WebBrowser 控件的应用程序之间的通信。使用该属性可以将动态 HTML (DHTML) 代码与客户端应用程序代码集成在一起。为该属性指定的对象可作为 window.external 对象(用于主机访问的内置 DOM 对象)用于网页脚本。
可以将此属性设置为希望其公共属性和方法可用于脚本代码的任何 COM 可见的对象。可以通过使用 ComVisibleAttribute 对类进行标记使其成为 COM 可见的类。
若要从客户端应用程序代码调用网页中定义的函数,请使用可从 Document 属性检索的 HtmlDocument 对象的 HtmlDocument.InvokeScript 方法。
下面的代码示例演示如何使用 ObjectForScripting 属性。在该示例中,ObjectForScripting 属性被设置为当前窗体。
using System;
using System.Windows.Forms;
using System.Security.Permissions;
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
[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" });
}
}
分享到:
相关推荐
前台js与后台C#互相调用 这里总结的很好,拿来了,另外加了点说明 C#代码与javaScript函数的相互调用
c#代码与javascript函数的相互调用
C#代码与javaScript函数的相互调用,几个不同的方法和示例
XiliumCefGlue初始化,c#与JS代码互调代码。已经验证! 文档说明 http://blog.csdn.net/u013564470/article/details/78395984
Xilium.CefGlue.WinForm,调用JS,JS调用C#
C#代码与javaScript函数的相互调用.docx
asp.net后台调用javascript函数、已有变量。 javascript调用后台(.cs文件)的函数、变量。
这是一个DEmo,讲解了Unity 3D的编译顺序,以及C# 和 JavaScript 代码之间的变量相互调用,简单明了!
C#代码与javaScript函数的相互调用 问: 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript的已有变量? 4.如何在C#中访问JavaScript函数? 问题1答案如下: javaScript函数中...
问题1答案如下: javaScript函数中执行C#代码中的函数: 方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2、在前台写一个js函数,内容为document.getElementById(“btn1”).click(); 3...
= ResolveUrl(“../PayCenter/AlipayAdd.aspx”)%>’>地址</a> 2、C#调用客户端方法:(top.window.document:表父窗体,如果是MainFrame对象在本窗体中,则不加top.window.document) Js中的方法: 代码如下: ...
C#代码与javaScript函数的相互调用
最近做一个小项目,网页中嵌入google maps,输入经纬度坐标可以定位地图位置并加注标记,点击标记...C#代码与javaScript函数的相互调用主要有四个方面: 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量?
不多说,直接上代码,winform下button1调用js函数,从html页面获取值,然后JS调用WINFORM的函数,传送获取到的值到winform并通过messagebox的方法show出来。一步到位,winform调用JS函数和JS调用winform函数的方法都...
C# 中基于 COM+ 的结构化存储,C#代码与javaScript函数的相互调用,C#共享内存操作类
1.在后台c#代码中调用jacascript的方法 javascript代码: [removed] function test() { alert(oec2003); return false; } [removed] c#代码: protected void Button1_Click(object sender, ...
在设置过webBrowser控件的ObjectForScripting属性后,还需要设置应用程序对com可见,不然会抛出一个异常... 代码如下:[ComVisible(true)] public partial class Form1 : Form { public Form1() {