NW.js製のMacアプリでテキストをコピペできるようにする

NW.jsでHTMLからMacアプリをつくったとき、そのままではアプリ内に表示されているテキストをクリップボードにコピーできません。 NW.js+クリップボードで検索すると スクリプトからクリップボードをハンドルする方法 がでてきて探すのに苦労したのでメモしておきます。

アプリ内のテキストをコピーできるようにするにはindex.htmlを下記のように書き換えて、編集メニューを追加してあげる必要があります。NW.jsには createMacBuiltin というMacアプリ用に一般的な編集メニューを生成してくれる関数があり、それを最初に呼び出す形です。

<!DOCTYPE html>
<html>
<head>
<title>hello world</title>
</head>
<body>
<script>
//コピペのために編集メニュー表示
var gui = require('nw.gui');
var win = gui.Window.get();
var nativeMenuBar = new gui.Menu({ type: "menubar" });
nativeMenuBar.createMacBuiltin("My App");
win.menu = nativeMenuBar;
//コピペのために編集メニュー表示

var os = require('os');
document.write("My OS is " + os.platform() + " " + os.release());
</script>
</body>
</html>