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

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

1.1. Js交互1

1.2. 动态参数个数1

1.3. 事件监听2

2. sendNSCommand2

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://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调用

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

onclick="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&#160;与c#&#160;java交互html5化的原理与总结.doc

    atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略 1 1.1. Js交互 1 1.2. 动态參数个数 1 1.3. 事件监听 2 2. ...

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

  3. Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持

    Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1. 设置 document.domain为一致  推荐1 2. Apache 反向代理 推荐1 ...

  4. Atitit 电子商务订单号码算法(java c# php js 微信

    Atitit 电子商务订单号码算法(java c# php js  微信 1.1. Js版本的居然钱三爷里面没有..只好自己实现了. 1.2. 订单号标准化...长度16位 1.3. 订单号的结构 前 ...

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

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

  6. Atitit.js javascript异常处理机制与java异常的转换.js exception process Voae

    Atitit.js javascript异常处理机制与java异常的转换.js exception processVoae 1. 1. javascript异常处理机制 1 2. 2. Web前后台异 ...

  7. atitit.系统托盘图标的设计java swing c# .net c++ js

    atitit.系统托盘图标的实现java swing c# .net c++ js 1. 系统托盘图标的结构 1 2. Java swing的实现 1 3. .net的实现 1 4. C++的实现 1 ...

  8. 利用js与java交互

    为了方便网页和应用的交互,安卓系统WebView提供JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法即可映射一个Java对象到JavaSc ...

  9. 【转】JS 和 java 交互

    android中如何获得webView中的内容发表于 2011 年 06 月 13 日 由 admin本文概要:在程序中经常会用到webView来显示网页,但如果能够得到网页中的内容呢,本文将给你一个 ...

随机推荐

  1. 深度了解git工具

    今天给大家介绍一个深度了解git的学习视频,视频讲的挺好的,可以听听. 深度了解git学习视频

  2. rabbitmq使用日记

    一.安装 添加安装源 #echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list ...

  3. easyui toopTip,鼠标划过悬浮,显示一个小提示框的方法

    easyui toopTip,鼠标划过悬浮,显示一个小提示框的方法 /*easyui,鼠标划过悬浮,显示一个小提示框的方法*/ function toopTip(idOrClass,showText) ...

  4. 从Windows下引导安装ubuntu

    Ubuntu引导安装 首先是安装前的准备工作 1.需要安装的 ubuntu系统的ISO镜像. 2.easyBCD引导软件 3.所在的Windows系统(本人win7下安装) 4.DiskGenius( ...

  5. 【STM32H7教程】第14章 STM32H7的电源,复位和时钟系统

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第14章       STM32H7的电源,复位和时钟系 ...

  6. 【原创】SSRS (SQL Serve Reporting Service) 访问权限的问题

    问题:The permissions granted to user 'TOUCHPOINTMED\sshi' are insufficient for performing this operati ...

  7. Hadoop2.0.0+CDH4.5.0集群配置

    Hadoop 2.0.0-cdh4.5.0安装:http://blog.csdn.net/u010967382/article/details/18402217 CDH版本下载:http://arch ...

  8. java_sql_Batch_批处理

    java  JDBC 进行sql语句的批处理的两种方法示例代码.表是oracle数据库里的dept表,为了看清逻辑关系,把异常都throws 出去. package com.ayang.jdbc; i ...

  9. 视口(viewport)原理详解之第二部分(移动端浏览器)

    一.移动端浏览器的问题 当我们把移动端浏览器和桌面浏览器比较时,最明显的差异就是尺寸.移动端浏览器尺寸要比桌面屏幕小得多,移动浏览器最多差不多也就400px.最重要的问题集中在我们的CSS上,特别是v ...

  10. mysql/mariadb 数据库配置

    1.  启动mariadb systemctl start mariadb 2. 设置开机启动mariadb systemctl enable mariadb 一.修改用户密码,以root为例 1. ...