node-webkit教程(8)Platform Service之Clipboard

作者:玄魂

来源:node-webkit教程(8)Platform Service之Clipboard

目录

  • 8.1 Clipboard 操作
  • 8.6 小结

前言

8.1 Clipboard 操作

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

新建clip.html和package.json。

clip.html内容如下:

  1. <html>
  2. <head>
  3. <title>appDemo</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. </head>
  6. <body >
  7. <h1>app api 测试</h1>
  8. <button onclick="getText()">获取内容</button>
  9. <button onclick="setText()">写入内容</button>
  10. <button onclick="clearText()">清除内容</button>
  11. <script>
  12. var gui = require('nw.gui');
  13. // We can not create a clipboard, we have to receive the system clipboard
  14. var clipboard = gui.Clipboard.get();
  15. function apendText(text) {
  16. var element = document.createElement('div');
  17. element.appendChild(document.createTextNode(text));
  18. document.body.appendChild(element);
  19. }
  20. function clearText()
  21. {
  22. // And clear it!
  23. clipboard.clear();
  24. apendText('剪贴板内容已清除');
  25. }
  26. function setText()
  27. {
  28. // Or write something
  29. clipboard.set('这是node-webkit向剪贴板写的内容', 'text');
  30. }
  31. function getText()
  32. {
  33. // Read from clipboard
  34. var text = clipboard.get('text');
  35. apendText(text);
  36. }
  37. </script>
  38. </body>
  39. </html>

package.json内容如下:

  1. {
  2. "name": "clip-demo",
  3. "main": "clip.html",
  4. "nodejs":true,
  5. "window": {
  6. "title": "clipDemo",
  7. "toolbar": true,
  8. "width": 800,
  9. "height": 600,
  10. "resizable":true,
  11. "show_in_taskbar":true,
  12. "frame":true,
  13. "kiosk":false,
  14. "icon": "2655716405282662783.png"
  15. },
  16. "webkit":{
  17. "plugin":true
  18. }
  19. }

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

2.8. node-webkit教程(8) Platform Service之Clipboard - 图1

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

  1. var clipboard = gui.Clipboard.get();

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

  1. function setText()
  2. {
  3. // Or write something
  4. clipboard.set('这是node-webkit向剪贴板写的内容', 'text');
  5. }

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

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

  1. function getText()
  2. {
  3. // Read from clipboard
  4. var text = clipboard.get('text');
  5. apendText(text);
  6. }

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

2.8. node-webkit教程(8) Platform Service之Clipboard - 图2

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

  1. function clearText()
  2. {
  3. // And clear it!
  4. clipboard.clear();
  5. apendText('剪贴板内容已清除');
  6. }

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

2.8. node-webkit教程(8) Platform Service之Clipboard - 图3

8.6 小结

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

下一篇文章,介绍Tray。