2

ユーザーがページのどこでも ctrl-v を押して、クリップボードのデータをテキストエリアに貼り付けることができる「簡単な貼り付けエクスペリエンス」を作成しようとしています。テキストエリアがフォーカスされていなくても、テキストエリアにテキストを貼り付けられるようにしたい。

このコードを使用して貼り付けイベントを検出できることはわかっています。

$('html').bind('paste', function(e) {

});

しかし、クリップボードのデータを取得してテキストエリアに「移動」する方法、またはこれが可能かどうかはわかりません(ユーザーのクリップボードへのアクセスに関する制限があるため)。

4

3 に答える 3

4

Firefox ではできません。IE、Safari、および Chrome では、次のことができます。

$('html').bind('paste', function(e) {
    e.preventDefault();
    if(e.originalEvent.clipboardData){
       var text = e.originalEvent.clipboardData.getData("text/plain");
       alert(text);
     }
});
于 2013-01-03T03:47:33.843 に答える
0

Firefoxで試していることを実行し、Ctrl-Vをキャプチャしてテキストエリア/テキスト入力にリダイレクトすることができます。

ただし、他のポスターが言ったように、セキュリティ上の理由から、Firefox で onpaste イベントをリッスンすることはできませんが、keydown イベントをリッスンして Ctrl+V をキャプチャすることで可能です。

すべてのブラウザーで、一般的にクリップボードに直接アクセスすることはできません (フラッシュを使用して設定することは可能ですが、Internet Explorer の一部のバージョンでは可能だったと思います)。

ウィンドウで keydown イベントをリッスンし、Ctrl+V が押されたかどうかを確認できます。

次に、入力/テキストエリアにフォーカスし、イベントの伝播をキャンセルしないでください。Firefox は、希望する場所にテキストを喜んで貼り付けます。

次に、入力の onpaste または onchange イベントをリッスンして、テキストをさらに処理できます。

HTML:

<textarea id='redirect_ta'></textarea>

JS:

$(window).keydown(function(event) {
    if(event.ctrlKey && event.keyCode == 0x56) {
        $('#redirect_ta').focus();
    }
});

これを説明する JSFiddle を次に示します。

http://jsfiddle.net/DK536/2/

Firefox、Chrome、Internet Explorer で動作します。

于 2014-06-03T11:46:11.700 に答える
0

JavaScriptからコピー バッファにアクセスすることはできません(または Flash ですが、テキストをコピー バッファに追加して読み戻すことができない、ZeroClipboardというFlash プロジェクトがあります)。

于 2013-01-03T01:05:55.180 に答える