• 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

    2sendNSCommand 2

    2.1.1. --------nativeswing的实现 2

    3注冊js 事件后台函数 3

    4后台c# 3

    5參考 4

     

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

    1.1. Js交互

    FirefoxChrome也提供了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

     

     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<StringjavaEventHandler> ScriptEventDic = new Dictionary<stringjavaEventHandler>();

     

              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控件WebBrowserJS脚本交互 冰 鱼 博客园

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

     

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

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

    Winform控件WebBrowserJS脚本交互 冰 鱼 博客园.html

    
  • 相关阅读:
    python爬虫实例--爬取拉勾网
    面试时,如何回答你还有什么想要了解的?
    深入理解三次握手四次挥手以及使用scapy实现ddos雏形
    解决socket粘包的两种low版模式 os.popen()和struct模块
    浅谈osi模型 三次握手 四次挥手 ddos攻击原理
    渲染相关书籍
    unity 场景编辑器物体加图标
    音乐模拟器
    3d服装制作软件
    uv投影插值
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7040952.html
Copyright © 2020-2023  润新知