html5 java交互_atitit.js 与c# java交互html5化的原理与总结.doc

atitit.js 与c# java交互html5化的原理与总结.doc

1.实现html5化界面的要解决的策略

1.1.Js交互

Firefox与Chrome也提供了external对象,例如,他们都默认的实现了opensearch的两个外部方法:AddSearchProvider IsSearchProviderInstalledChrome下,可以在控制台输入window.external看到。Firefox默认提供的外部方法稍稍多一些,也可以可以通过firebug看到。

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

1.2.动态参数个数

Java的是obj[]对象数组了。默认支持动态参数个数

C#的使用obj[]就不行兰..子能预保留

function sendNSCommand()

{

//arguments

var s=(arguments);

var argsArray = Array.prototype.slice.call(arguments);

window.external.sendNSCommand(argsArray[0],argsArray[1],argsArray[2],argsArray[4],argsArray[5],argsArray[6],argsArray[7]);

alert(window.external);

}

//供JS调用

publicvoidsendNSCommand(Objectmessage,Objectmessage2,Objectmessage3,Objectmessage4,Objectmessage5,Objectmessage6,Objectmessage7)

{

//  Object[] objs = (Object[])message;

Console.WriteLine(message);

}

1.3.事件监听

本文提到的事件,可以分为三种类型,分别是表单提交、超链接跳转、JavaScript直接调用BrowserFunction。其中JavaScript调用BrowserFunction由于无需刷新页面,可以直接执行,因此无需对其进行特殊监听。然而,Web上最为常见的表单提交和超链接跳转,都需要刷新页面,而刷新页面时,则无法调用BrowserFunction。那么如何对这些事件进行监听成为文章的一大难点。

Browser提供了一个事件监听机制,可以为Browser添加地址变更监听器,也就是LocationListener,这个接口有两个方法

2.sendNSCommand

οnclick="sendNSCommand('play','百度一下');"/

Window.external.对象就是我们后台的一个对象。。如果没有定义,就是null

2.0.1.--------nativeswing的实现

sendNSCommand('play',video);

3.注册js事件后台函数

ScriptEvent.ScriptEventDic.Add("play",delegate(IList args) {

MessageBox.Show((string)args[0]);

returnnull;

});

4.后台c#

//        修改webbrowser的属性使c#可以调用js方法:

webbrowser.ObjectForScripting =newScriptEvent();

namespaceClassLibrary1.com.attilax.ui

{

[System.Runtime.InteropServices.ComVisible(true)]

publicclassScriptEvent

{

publicstaticDictionary ScriptEventDic =newDictionary();

publicdelegateObjectjavaEventHandler(IList args);//第一步:定义委托类型

//供JS调用

publicvoidsendNSCommand(Objectmessage,Objectmessage2,Objectmessage3,Objectmessage4,Objectmessage5,Objectmessage6,Objectmessage7)

{

//  Object[] objs = (Object[])message;

Console.WriteLine(message);

Stringmeth =(String) message;

IList li =newList();

li.Add(message2);

li.Add(message3); li.Add(message4); li.Add(message5); li.Add(message6); li.Add(message7);

javaEventHandlerhdl = ScriptEventDic[meth];

hdl(li);

}

}

}

5.参考

Winform控件WebBrowser与JS脚本交互-冰 鱼-博客园

atitit.javascript调用java in swt attilax总结- attilax的专栏-博客频道- CSDN.NET.html

WPF的WebBrowser里面使用JavaScript调用外部方法的决解方法- Lonely Bandit -博客园.html

[转]JS调用WPF代码执行了QueryInterface调用请求提供COM可见的托管类JavaScript调WinFrom_最黑de四季_新浪博客.html

Winform控件WebBrowser与JS脚本交互-冰 鱼-博客园.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值