GeckoFX组件与C#交互

基于GeckoFX 60的组件。

1. 调用页面的JS方法,这个比较简单, 网上都有很多例子。

//调用JavaScript函数,并获取返回值;
string _result = string.Empty;
using (AutoJSContext context = new AutoJSContext(base.Window))
{
    //将js方法和参数,拼合成一个字符串。 传回function的返回值到_result;
    context.EvaluateScript("方法名称 参数1,参数2", out _result);
}

2. web页面调用c#方法

//第一步:加载页面;
//第二步:在DocumentCompleted事件(或重载OnDocumentCompleted),添加事件侦听
this.AddMessageEventListener("invoke", WebCallback);

//还需要定义一个函数,函数的名称与上面的对应:
public void WebCallback(string _data)
{
    //_data就是页面返回的数据;
}

/*
    百度了好多文章,这些都是讲解了的,唯独没有说要在文档加载完成后,添加事件侦听。
    也许是因为对web不了解的原因,所以在这里卡了好久。
*/



//Web页面。test.html
//在js中,添加如下代码,将web数据传回c#;
var event = new MessageEvent('invoke',
    {
        'view': window,
        'bubbles': false,
        'cancelable': false,
        'data': "传回的数据内容"
    });
document.dispatchEvent(event);


//注:上面添加事件侦听用的invoke和js中创建MessageEvent时用的invoke,名称自定义,只需要相同即可;

可供WinForm使用的Web组件很多,在c#与js数据交互的处理上,个人认为.net自带的WebBrowser组件,在使用上是最方便的, 功能也是最强大的,只是这个组件是基于IE的,缺点就不说了。

 

你可能感兴趣的:(.NET)