zoukankan      html  css  js  c++  java
  • node-webkit教程(8)Platform Service之Clipboard

    node-webkit教程(8)Platform ServiceClipboard

    /玄魂

    目录

    node-webkit教程(8)Platform ServiceClipboard. 1

    前言... 1

    8.1  Clipboard 操作... 2

    8.6 小结... 6

     

    前言

    几个月前,要开发一个简易的展示应用,要求支持离线播放(桌面应用)和在线播放(web应用)。

    当时第一想到的是flex,同一套代码(或者只需少量的更改)就可以同时运行在桌面和浏览器上。由于很多展现效果要全新开发,我想到了impress.js(https://github.com/bartaz/impress.js/)。如果选择impress.js,就意味着要将html5作为桌面应用,当时想到要封装webkit,但是本人对这方面也不是很熟悉,时间也很有限,就又沿着这个方向搜索,找到了node-webkit(https://github.com/rogerwang/node-webkit)

    node-webkit解决了我通过htmljs来编写桌面应用的难题

    至于node-webkit的定义,按照作者的说法:

     基于node.jschromium的应用程序实时运行环境,可运行通过HTML(5)CSS(3)Javascript来编写的本地应用程序。node.jswebkit的结合体,webkit提供DOM操作,node.js提供本地化操作;且将二者的context完全整合,可在HTML代码中直接使用node.jsAPI

    从本篇文章开始,为您介绍Platform Services些列的API,本系列由以下类别:

    ·             App – 每个应用运行时全局api

    ·             Clipboard – 剪贴板

    ·             Tray – 状态栏图标,消息通知

    ·             File dialogs-文件选择对话框

    ·             Shell – 桌面相关

    ·             Handling files and arguments-处理文件和相关参数

     

    8.1  Clipboard 操作

    Clipboard是对操作系统剪贴板的一个抽象,目前只支持获取和设置纯文本内容。

    新建clip.htmlpackage.json

    clip.html内容如下:

    <html>

    <head>

        <title>appDemo</title>

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    </head>

    <body >

        <h1>app api 测试</h1>

        <button onclick="getText()">获取内容</button>

        <button onclick="setText()">写入内容</button>

        <button onclick="clearText()">清除内容</button>

        <script>

            var gui = require('nw.gui');

     

            // We can not create a clipboard, we have to receive the system clipboard

            var clipboard = gui.Clipboard.get();

            function apendText(text) {

                var element = document.createElement('div');

                element.appendChild(document.createTextNode(text));

                document.body.appendChild(element);

            }

     

            function clearText()

            {

                // And clear it!

                clipboard.clear();

                apendText('剪贴板内容已清除');

            }

            function setText()

            {

                // Or write something

                clipboard.set('这是node-webkit向剪贴板写的内容', 'text');

            }

     

            function getText()

            {

                // Read from clipboard

                var text = clipboard.get('text');

                apendText(text);

            }

        </script> 

       

    </body>

    </html>

    package.json内容如下:

    {

      "name": "clip-demo",

      "main": "clip.html",

      "nodejs":true,

       "window": {

        "title": "clipDemo",

        "toolbar": true, 

        "width": 800, 

        "height": 600,

       "resizable":true,

       "show_in_taskbar":true,

       "frame":true,

       "kiosk":false,

       "icon": "2655716405282662783.png"

      },

      "webkit":{

      "plugin":true

      }

    }

    示例代码准备完毕之后,我们打开程序,如图:

    程序有三个按钮,分别是获取、写入和清除剪贴板内容。在操作剪贴板之前,我们需要先获取clipboard对象:

    var clipboard = gui.Clipboard.get();

    现在我们先单击第二个按钮,向剪贴板写入内容,代码如下:

    function setText()

            {

                // Or write something

                clipboard.set('这是node-webkit向剪贴板写的内容', 'text');

            }

    clipboard.set方法接收两个参数,第一个参数是要写入的内容,第二个参数是内容类型,目前只支持text类型。

    是否写入成功了呢?我们再单击第一个按钮,事件处理代码如下:

    function getText()

            {

                // Read from clipboard

                var text = clipboard.get('text');

                apendText(text);

            }

    第一个按钮通过clipboard.get方法获取剪贴板内容然后输出,get方法接收一个参数,指明内容类型,目前只支持text类型。写入和获取都成功,会出现如下界面:

    下面我们再看清楚内容的按钮做了什么:

      function clearText()

            {

                // And clear it!

                clipboard.clear();

                apendText('剪贴板内容已清除');

            }

    调用了clipboard.clear()方法,清除剪贴板,想要验证是否清除成功,只需再次点击获取内容按钮,看是否有内容输出即可。

     

    8.6 小结

    本文内容主要参考node-webkit的官方英文文档,做了适当的调整(https://github.com/rogerwang/node-webkit/wiki/Clipboard)。

    下一篇文章,介绍Tray

    鄙视不标明出处的转载,更多相关内容,欢迎访问玄魂的博客www.xuanhun521.com

    更多相关内容,欢迎访问玄魂的博客(更多node-webkit相关内容 http://www.xuanhun521.com/Blog/Tag/node-webkit)

    ps:nw.js,electron交流群 313717550 

     

  • 相关阅读:
    PHP学习路径及练手项目合集
    Java学习路径及练手项目合集
    Pandas 常见的基本方法
    MAC 下配置MQTT 服务器Mosquitto
    MQTT 在 mac 上搭建
    Git学习--版本回退
    Git学习--创建版本库
    js判断是否在微信浏览器中打开
    微信浏览器HTTP_USER_AGENT判断
    XXX.APP已损坏,打不开.你应该将它移到废纸篓
  • 原文地址:https://www.cnblogs.com/xuanhun/p/3671461.html
Copyright © 2011-2022 走看看