javascriptを使ってweb上の文字をクリップボードへコピーする

すぐ出来るだろうと思っていたら
結局イイカンジには出来ませんでした。
W3Cさん何とかしてくれぇ!






実行環境


まず実行環境が制限されます。
ChromeとFirefoxくらいでしか動きません。(少し修正すればIEも可能?)
Chrome バージョン 46.0.2490.71 m (64-bit)
FireFox 41.0.1


サンプルソース


<html>
<head>
<meta charset="UTF-8">
<title>クリップボードにコピー</title>

<script type="text/javascript">
    function copyClipboard()
    {
        // Ctrl + c を押すことで以下が実行される
        document.addEventListener('copy', function(e) {
            // コピーする対象を取得
            var copySource = document.getElementById("source").value;
            var userAgent = window.navigator.userAgent.toLowerCase();
            e.preventDefault();
            // Chrome, fireFox のみ
            e.clipboardData.setData('text/plain', copySource);
        });
    }
</script>
</head>
<body>
    <div>
        コピー対象:
        <input type="text" id="source" name="name" />
    </div>

    <input type="button" value="クリップボードへコピー" onclick="copyClipboard()" />
</body>
</html>



実行テスト



コピー対象:



これでボタンを押したらコピー出来...ない!?
Ctrl + c を押す必要があるらしい。
document.addEventListener('copy', function(e)...の部分がCtrl + c を押した時に発火される模様。
セキュリティとかの問題があるのはわかるけどもうちょっとこう...なんとかならなかったんだろうか?
というわけで2015/10/27現在クリップボードへコピーする完全な方法はないみたいですね。というかこれそのうち使えなくなりそうですね。
え?Flash?またまたご冗談を。

2015年10月27日火曜日