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相关推荐

  1. 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. 动态参 ...

  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. ...

  3. Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7...

    Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7 1. 1. javascript异常处理机 ...

  4. 跨平台实现基础(二)JavascriptInterface原理和Js和Java交互实践

    作者:Tamic 更多文章关注开发者技术前线 上一篇<JsCore 原理和实践> 前言 谷歌提供的系统组件WebView,用来加载和展现html网页,其采用webkit内核驱动,来实现网页 ...

  5. Android极简的js与java交互库一一SimpleJavaJsBridge

    今日科技快讯 根据相关报道,本月底旧版本Uber中国App将全面停止在中国的服务.内部人士透露,所有的Uber中国司机也正在被转移到滴滴司机的平台上,月底会全部转移完成. 另外滴滴出行新成立了一个部门 ...

  6. html5怎么跟安卓交互,html5怎么与android交互

    满意答案 Android中构建HTML5应用 使用WebView控件,与其他控件的使用方法相同在layout中使用一个标签,WebView不包括导航栏,地址栏等完整浏览器功能,只用于显示一个html. ...

  7. JAVA毕业设计HTML5“守护萌宠”网站设计与实现计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计HTML5"守护萌宠"网站设计与实现计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计HTML5"守护萌宠"网站设计与实现计算机源码 ...

  8. java支持html5视频流技术Pseudostreaming – Roden的专栏 – CSDN博客

    文章目录[隐藏] java支持html5视频流技术Pseudostreaming 首页博客学院 下载论坛APP 问答商城活动VIP会员专题招聘ITeyeGitChat 图文课 写博客 消息 登录注册 ...

  9. JAVA毕业设计HTML5旅游网站计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计HTML5旅游网站计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计HTML5旅游网站计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开 ...

  10. JAVA毕业设计HTML5运河古城网站计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计HTML5运河古城网站计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计HTML5运河古城网站计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S ...

最新文章

  1. 将C1Chart数据导出到Excel
  2. rabitMQ-centos7安装
  3. 为什么乱码:meta http-equiv=content-type前的非ANSI字符
  4. 在SAP云平台上部署和运行Docker应用
  5. AI人工智能ML机器学习DL深度学习
  6. The 15th UESTC Programming Contest Preliminary D - Destr0y City cdoj1558
  7. Ansible Tower - 使用入门 2 - 不同团队用户基于 RBAC 执行模板
  8. HPU--1392 分隔A+B
  9. 设计一些自学软件的小测试demo吧。
  10. 【C++】图像加载(libpng、FreeImage、stb_image)
  11. java机票编程_携程预订机票后台java开发编程
  12. PostgreSQL 怎么通过命令来恢复删除的数据
  13. Model Adaption: Unsupervised Domain Adaption Without Source Data
  14. (万字超详细的复习资料丨没有之一)通信原理考试复习资料,按需收藏加关注。
  15. 你知道Java程序猿工资有多少吗?
  16. 【mq】从零开始实现 mq-09-消费者拉取消息 pull message
  17. Java性能-线程和同步-JVM线程优化和线程优先级
  18. A. Parsa‘s Humongous Tree(树形DP + 贪心)
  19. SpringMVC——文件上传下载,异步请求和SSM整合
  20. Everything官网最新下载 中文,绿色版 Everything下载

热门文章

  1. mysql判断后执行查询语句吗_如何看mysql执行的sql语句
  2. 异步promise、Async/await介绍
  3. Linux下使用源码编译方式安装zlib
  4. HtmlHelper类在View中替代了纯HTML代码
  5. 传递参数安全验证代码示例
  6. ubuntu下切换到root用户
  7. Oracle-随笔笔记
  8. bay——RAC_ASM ORA-15001 diskgroup DATA does not exist or is not mounted.docx
  9. 探秘小程序(3):登录
  10. 01_6_SERVLET如何从上一个页面取得参数