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