atitit.js 与c# java交互html5化的原理与总结.doc
atitit.js 与c# java交互html5化的原理与总结.doc
1. 实现html5化界面的要解决的策略 1
1.1. Js交互 1
1.2. 动态参数个数 1
1.3. 事件监听 2
2. sendNSCommand 2
2.1.1. --------nativeswing的实现 2
3. 注册js 事件后台函数 3
4. 后台c# 3
5. 参考 4
1. 实现html5化界面的要解决的策略
1.1. Js交互
Firefox与Chrome也提供了external对象,例如,他们都默认的实现了opensearch的两个外部方法:
AddSearchProvider IsSearchProviderInstalled
Chrome下,可以在控制台输入window.external看到。
Firefox默认提供的外部方法稍稍多一些,也可以可以通过firebug看到。
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/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调用
public void sendNSCommand(Object message, Object message2, Object message3, Object message4, Object message5, Object message6, Object message7)
{
// 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<object> args) {
MessageBox.Show((string)args[0]);
return null;
});
4. 后台c#
// 修改webbrowser的属性使c#可以调用js方法:
webbrowser.ObjectForScripting = new ScriptEvent();
namespace ClassLibrary1.com.attilax.ui
{
[System.Runtime.InteropServices.ComVisible(true)]
public class ScriptEvent
{
public static Dictionary<String, javaEventHandler> ScriptEventDic = new Dictionary<string, javaEventHandler>();
public delegate Object javaEventHandler(IList<Object> args);//第一步:定义委托类型
//供JS调用
public void sendNSCommand(Object message, Object message2, Object message3, Object message4, Object message5, Object message6, Object message7)
{
// Object[] objs = (Object[])message;
Console.WriteLine(message);
String meth =(String) message;
IList<Object> li = new List<Object>();
li.Add(message2);
li.Add(message3); li.Add(message4); li.Add(message5); li.Add(message6); li.Add(message7);
javaEventHandler hdl = 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
atitit.js 与c# java交互html5化的原理与总结.doc相关推荐
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1.设置 document.domain为一致 推荐1 2.Apache 反向代理 推荐1 3. ...
- Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7...
Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7 1. 1. javascript异常处理机 ...
- 跨平台实现基础(二)JavascriptInterface原理和Js和Java交互实践
作者:Tamic 更多文章关注开发者技术前线 上一篇<JsCore 原理和实践> 前言 谷歌提供的系统组件WebView,用来加载和展现html网页,其采用webkit内核驱动,来实现网页 ...
- Android极简的js与java交互库一一SimpleJavaJsBridge
今日科技快讯 根据相关报道,本月底旧版本Uber中国App将全面停止在中国的服务.内部人士透露,所有的Uber中国司机也正在被转移到滴滴司机的平台上,月底会全部转移完成. 另外滴滴出行新成立了一个部门 ...
- html5怎么跟安卓交互,html5怎么与android交互
满意答案 Android中构建HTML5应用 使用WebView控件,与其他控件的使用方法相同在layout中使用一个标签,WebView不包括导航栏,地址栏等完整浏览器功能,只用于显示一个html. ...
- JAVA毕业设计HTML5“守护萌宠”网站设计与实现计算机源码+lw文档+系统+调试部署+数据库
JAVA毕业设计HTML5"守护萌宠"网站设计与实现计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计HTML5"守护萌宠"网站设计与实现计算机源码 ...
- java支持html5视频流技术Pseudostreaming – Roden的专栏 – CSDN博客
文章目录[隐藏] java支持html5视频流技术Pseudostreaming 首页博客学院 下载论坛APP 问答商城活动VIP会员专题招聘ITeyeGitChat 图文课 写博客 消息 登录注册 ...
- JAVA毕业设计HTML5旅游网站计算机源码+lw文档+系统+调试部署+数据库
JAVA毕业设计HTML5旅游网站计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计HTML5旅游网站计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开 ...
- JAVA毕业设计HTML5运河古城网站计算机源码+lw文档+系统+调试部署+数据库
JAVA毕业设计HTML5运河古城网站计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计HTML5运河古城网站计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S ...
最新文章
- 将C1Chart数据导出到Excel
- rabitMQ-centos7安装
- 为什么乱码:meta http-equiv=content-type前的非ANSI字符
- 在SAP云平台上部署和运行Docker应用
- AI人工智能ML机器学习DL深度学习
- The 15th UESTC Programming Contest Preliminary D - Destr0y City cdoj1558
- Ansible Tower - 使用入门 2 - 不同团队用户基于 RBAC 执行模板
- HPU--1392 分隔A+B
- 设计一些自学软件的小测试demo吧。
- 【C++】图像加载(libpng、FreeImage、stb_image)
- java机票编程_携程预订机票后台java开发编程
- PostgreSQL 怎么通过命令来恢复删除的数据
- Model Adaption: Unsupervised Domain Adaption Without Source Data
- (万字超详细的复习资料丨没有之一)通信原理考试复习资料,按需收藏加关注。
- 你知道Java程序猿工资有多少吗?
- 【mq】从零开始实现 mq-09-消费者拉取消息 pull message
- Java性能-线程和同步-JVM线程优化和线程优先级
- A. Parsa‘s Humongous Tree(树形DP + 贪心)
- SpringMVC——文件上传下载,异步请求和SSM整合
- Everything官网最新下载 中文,绿色版 Everything下载
热门文章
- mysql判断后执行查询语句吗_如何看mysql执行的sql语句
- 异步promise、Async/await介绍
- Linux下使用源码编译方式安装zlib
- HtmlHelper类在View中替代了纯HTML代码
- 传递参数安全验证代码示例
- ubuntu下切换到root用户
- Oracle-随笔笔记
- bay——RAC_ASM ORA-15001 diskgroup DATA does not exist or is not mounted.docx
- 探秘小程序(3):登录
- 01_6_SERVLET如何从上一个页面取得参数