2009-07-17 8 views
7

貼り付ける前にクリップボードからコンテンツを編集するためのJavascript関数を記述しようとしています。今、私はJQueryを介して機能するためにバインドされたイベント 'paste'を取得しました。クリップボードのデータを取得

$(this.elementDoc).bind('paste', function(event){ 
    self.OnPaste(event); 
}); 

しかし、それは重要ではありません。クリップボードからデータを取得したいのですが、どうしたらいいか分かりません。私はあらゆるヒントに喜んでいます。

答えて

4

これは大変です。私が正しくリコールすれば、IEはクリップボードへのアクセスを許可しますが、デフォルトではFirefoxはセキュリティ上の問題のためではありません。私が取り組んでいるプロジェクトではこれをやらなければならず、コピーを行った小さなSWFファイルを使わなければなりませんでした。ここで

http://www.jeffothy.com/weblog/clipboard-copy/

+0

私が知る限り、この解決策ではクリップボードにコピーできますが、クリップボードからはコピーできません。したがって、これは全く問題の提案の解決策ではありません - 私はそれがなぜマークされたのかわかりません(OPが混乱しない限り)。私が間違っている場合、説明してください! – bgmCoder

1

IEまたはChromeからそれを取得する方法です。まず、実際の貼り付けが行われないようにしてから、機能チェックを行い、変数テキストをクリップボードテキストに設定します。それを使ってテキストを操作し、貼り付け先の入力/要素の値、またはそれを使って何か他のものを設定することができます。

//get clipboard text 
event.preventDefault(); 
var text = null; 
if (window.clipboardData) 
    text = window.clipboardData.getData("Text"); 
else if (event.originalEvent && event.originalEvent.clipboardData) 
    text = event.originalEvent.clipboardData.getData("Text"); 

//manipulate the text 
text = '..do stuff with it..'; 
//set the text 
$(this).val(text); 
2

clipboardDataは、さまざまな潜在的な形式のデータを含むことができます。その可能なプログラムは、複数のフォーマットでクリップボードデータを追加します。フォーマットを調べるには、clipboardData.typesを見てください。

多くの場合、クリップボードのデータにはプレーンテキストが含まれ、typesにリストされている最初のタイプはMIMEタイプ「text/plain」になります。ブラウザからテキストをコピーすると、「text/plain」と「text/html」という2つのタイプがリストに表示されます。 getDataに渡す文字列に応じて、プレーンテキストまたはhtmlを取得できます。 「text」は「text/plain」の略語であり、「url」は「text/uri-list」の略語であるようです。 the ugly specを参照して、clipboardData.getDataの使用方法の詳細については

element.addEventListener('paste', function(event) { 
    var cb = event.clipboardData 
    if(cb.types.indexOf("text/html") != -1) {  // contains html 
    var pastedContent = cb.getData("text/html") 
    } else if(cb.types.indexOf("text/html") != -1) { // contains text 
    var pastedContent = cb.getData("text/html") 
    } else { 
    var pastedContent = cb.getData(cb.types[0]) // get whatever it has 
    } 

    // do something with pastedContent 
}) 

+0

これがなぜ機能するのか説明できますか? –

+0

説明を追加しました –