如何通过WebBrowser控件为WinForms处理javascript事件 [英] How to handle javascript events via WebBrowser control for WinForms

查看:130
本文介绍了如何通过WebBrowser控件为WinForms处理javascript事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已阅读来自.Net的WebBrowser控件 - 如何注入Javascript 是否可能从c#winforms 和其他许多人调用Javascript方法。这些示例是返回函数值或警报窗口(同步调用)。我必须从事件处理程序(asyn调用)获得结果:

I have read WebBrowser Control from .Net — How to Inject Javascript, Is it possible to call Javascript method from c# winforms and many others. Those examples were returns function value or alert window (synchronous calls). I have to get result from event handler (asyn call):

<script type="text/javascript">
        window.onload = function() {
            var o = new M.Build(document.getElementById("ZID"));

            M.Events.observe(o, o.Events.Success, function() {
                // I have to get some value!!
            });

            M.Events.observe(o, o.Events.Fault, function() {
                // I have to get some value!!
            });
        }
    </script>


推荐答案


从JavaScript调用C#

Calling C# from JavaScript

简单地说,你可以向WebBrowser公开一个C#对象
,即JavaScript
可以直接调用WebBrowser
类公开一个属于
ObjectForScripting的属性,可以通过
设置你的应用程序,并成为
JavaScript中的
window.external对象。该对象必须具有
ComVisibleAttribute设置为true

Simply put, you can expose a C# object to the WebBrowser that the JavaScript can call directly The WebBrowser class exposes a property called ObjectForScripting that can be set by your application and becomes the window.external object within JavaScript. The object must have the ComVisibleAttribute set true

C#:

 [System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public class ScriptInterface
    {
        public void callMe()
        {
            … // Do something interesting
        }
    }

    webBrowser1.ObjectForScripting = new ScriptInterface();

Javascript:

Javascript:

window.external.callMe();

从C#调用WebBrowser控件中的JavaScript

这篇关于如何通过WebBrowser控件为WinForms处理javascript事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆