Javascriptを使用してFirefox、Safari、Chromeでクリップボードを読むことはできますか?

StackOverflow https://stackoverflow.com/questions/233719

質問

JavaScriptを使用してクリップボードの内容を読み取ろうとしています。 Internet Explorerでは、関数を使用できます

window.clipboardData.getData("Text")

Firefox、Safari、Chromeで同様のクリップボードの読み取り方法がありますか?

役に立ちましたか?

解決

Safariは、 onpaste イベント中のクリップボードの読み取りをサポートしています。

情報

次のようなことをしたい:

someDomNode.onpaste = function(e) {
    var paste = e.clipboardData && e.clipboardData.getData ?
        e.clipboardData.getData('text/plain') :                // Standard
        window.clipboardData && window.clipboardData.getData ?
        window.clipboardData.getData('Text') :                 // MS
        false;
    if(paste) {
        // ...
    }
};

他のヒント

オンラインスプレッドシートは、Ctrl + C、Ctrl + Vイベントをフックし、非表示のTextAreaコントロールにフォーカスを移動し、コピーするコンテンツを目的の新しいクリップボードのコンテンツに設定するか、イベントの貼り付けが完了した後にコンテンツを読み取ります。

いいえ。 そして、ハッキング(古いバージョンのフラッシュなど)を見つけた場合、それに依存しないでください。

クリップボードから読みたい理由を尋ねてもいいですか?ユーザーがクリップボードの内容を渡したい場合は、貼り付けるだけです。

人々はあなたが言及したブラウザからクリップボードのデータを読むために隠されたFlash要素を使用すると信じています。

@agsamekの提案を使用して、ちょっとしたテストを作成して動作させました。私の場合、貼り付けられた入力のために新しいページの読み込みを待つ必要があるため、見えないテキストエリアに焦点を合わせ、そこからテキストを読みます。

これを拡張して、特定のキーを聞いて(組み合わせて貼り付け)、非表示フィールドに焦点を合わせることができます。最後に焦点を合わせた要素に再び焦点を合わせ、そこにコンテンツを貼り付ける必要があると思うので、間違いなくもっとやるべきことがあるでしょう。

これは最新のChromeおよびFirefoxで動作するのに十分でしたが、私のユースケースでは。提案を歓迎します。

https://jsfiddle.net/wuestkamp/91dxjv7s/11/

$(function () {

    $('body').prepend('<input type="text" id="hidden_textbox" style="position: absolute; width:0px; height: 0px; top: -100px; left: -100px">');

    var $hiddenTextbox = $('#hidden_textbox');
    $hiddenTextbox.focus();

    $(document).on('paste', function () {
        setTimeout(function () {
            var val = $hiddenTextbox.val();

            console.log('pasted: ' + val);

        }, 50);

    });

});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top