如何使用webbrower对象中的脚本调用C#事件
How do you call a C# event with a script that is in a webbrower object?
我为我的谷歌api做了一个小网站(因为我没有找到在C#窗体程序中使用它的方法)。这个想法是,当我点击地图图标时,需要在C#程序中触发一个事件。我正在使用C#From上的网络浏览器工具来显示我的网站。我真的希望这是可能的。
如果以上不可能,或者任何人对如何在带有图标/按钮的表单应用程序上实现映射有更好的想法,这将非常有帮助。
我看过:Sharpmap——但我的雇主不喜欢这个外观和:ThinkGeo]--它需要钱(仍然是一种选择)
本文档描述了web浏览器控件与其所在窗体之间的双向通信,其中包括从浏览器控件引发要由窗体处理的事件。
一些关键细节:
在Form_Load
事件中,控件的ObjectForScripting
属性设置为以下形式:
webBrowser1.ObjectForScripting = this;
在浏览器控件内的HTML中,window.external
用于访问"脚本对象"中的方法
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>";
所以这个:
window.external.Test('called from script code')
调用表单中的Test
方法,并将called from script code
作为参数传递。
public void Test(String message)
{
MessageBox.Show(message, "client code");
}
Thx Scott我得到了From来注册我的java脚本事件。你所要做的就是添加这些名称空间:
using System.Runtime.InteropServices;
using System.Security.Permissions;
这个在你的表格上方
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{...}
我也没有使用webBrowser1.DocumentText我使用了webBrowser1.Url-我使网站成为第一个,并刚刚添加了它。这有问题,网站需要托管,所以使用XAMPP本地托管它(用于测试)
相关文章:
- 从 java 脚本调用函数时 PHP 中出错
- 从不同的脚本调用Post AngularJs
- 多个“;脚本调用"在SINGLE”内$(文档).ready()”;
- 如何使用webbrower对象中的脚本调用C#事件
- 从Java脚本调用C#代码隐藏代码
- 当我使用java脚本调用web服务时,模拟器上没有得到响应
- 使用 jQuery getScript 从 PHP 脚本调用 JavaScript 函数
- 将注入的按钮从内容脚本调用到后台.js
- 从 Java 脚本调用 Java 方法
- 在 sharepoint 环境中使用脚本调用 lists.asmx Web 服务
- 从 php 脚本调用 javascript 问题
- 使用 AJAX 从 Java 脚本调用 RestfulWebService
- Ajax 从本地 js 脚本调用本地 Phantom.js 服务器
- 从 java 脚本调用参数化 ms-access 函数的语法是什么?
- JavaScript 加载其他脚本 - 调用函数 - 未定义
- 从 JavaScript 脚本调用 PHP 函数
- 从 PHP 脚本调用节点
- 从内联脚本调用coffeescript中的函数
- HTML选择标记值在从脚本调用函数后不会立即更改
- 在进行脚本调用后,Css未正确呈现属性