![]() |
1
9
看看 WebBrowser.ObjectForScripting 财产。设法让google maps使用它与Windows窗体应用程序对话。 |
![]() |
2
18
我在过去的一些应用程序中已经实现了这一点,方法如下:(注意:下面的示例还没有准备好生产,应该只作为指南使用)。 首先创建一个普通的.NET类(public),该类包含希望从Web浏览器控件中运行的javasvcipt调用的公共方法。 最重要的是,它必须使用System.Runtime.InteropServices命名空间中的comVisible(true)]属性进行修饰(IE中的javascript基于COM)。它可以被称为任何东西,我称之为“外部的”,以使事情更清楚。
接下来,在包含Web浏览器控件的.NET窗体中创建ComVisible类的实例,然后将Web浏览器控件对象设置为该实例的脚本:
最后,在Web浏览器控件中运行的javascript中,您可以通过window.external对象访问.net方法。在本例中,window.external实际上引用(通过COM互操作包装器间接引用)上面创建的“external”对象:
请注意,从javascript到.NET的调用会通过COM互操作层,因此必须查询默认接口、整理参数等。换句话说,它可能相对较慢,因此,如果您计划进行多个调用(例如,从一个循环中进行调用),请执行一些性能测试。 另外,为了将来参考,从.NET调用javascript代码更简单,只需使用document.invokescript方法:
|
![]() |
3
2
我在VB6中所做的:
|
![]() |
4
0
您所要做的就是为WebBrowser的导航事件添加一个事件处理程序。 此事件将在浏览器导航到下一页之前激发。它允许您中断进程并做任何您想做的事情,包括取消导航和调用代码。 很容易使用。我遇到的唯一警告是你不能查看postdata——请看我的问题: PostData Question 下面是一些示例代码:
|
![]() |
5
0
这是可能的,但我在.NET中没有做到。 几年前,我有一个C++应用程序,它承载了一个Web浏览器控件(ActiveX)。从控件中的HTML,可以调用ActiveX控件并让它执行操作。 在.NET中也是如此,尽管HTML DOM/javascript不知道C。但是,如果将.NET功能包装在COM对象中,则应该能够调用COM/ActiveX对象上的方法,而这些方法反过来又会调用C代码。 希望这有帮助。 |
![]() |
6
0
几年前我做了这个,并在这里写了博客: http://matthewskelton.wordpress.com/2007/04/21/calling-javascript-from-c/
具体来说,您可以使用
|
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |