4

Flash 10 が導入されて以来、新しいセキュリティ制限により、一般的な「クリップボードにコピー」スクリプトの多くが機能しなくなりました。ここにFlashのみのソリューションがあります:

http://cfruss.blogspot.com/2009/01/copy-to-clipboard-swf-button-cross.html

...ただし、ユーザーが Flash オブジェクトをクリックしてトリガーするのではなく、JS を介してコピー機能をトリガーする機能を探しています。

現在採用されているものの例については、以下を参照してください。

http://snipt.net/public

「コピー」リンクはいずれも、ここで jQuery のコピー プラグインを使用します。

http://plugins.jquery.com/project/copy

更新: OK、ZeroClipboard を試してみました。一見すると、それは素晴らしく見えました。ただし、複数のクリップボード バインドを有効にするために必要な冗長コードの量は許容できません。場合によっては、それぞれ独自の「コピー」リンクを持つテキストの 40 以上のインスタンスが存在します。まだより良い解決策を探しています...

4

2 に答える 2

4

気がつかなかった、恐ろしいニュースです。私もFlashトリックを多用しています。私が知る限り、ブラウザーのセキュリティ上の懸念から、他のプラグイン (ユビキタスな Flash 以外) をインストールせずにコピーを機能させる唯一の方法でした。

更新: 多くのパニックといくつかの Google 検索の後、私はhttp://code.google.com/p/zeroclipboard/に出くわしました。さて、ウェブサイトの更新に取り掛かる...

于 2009-01-15T04:10:18.473 に答える
0

このソリューションは、目的の操作を呼び出すキーストロークに対してのみ機能します。ユーザーが関連するキーストロークを終了する前に、ユーザーのカーソルを textarea 要素に移動することによって機能します。テキスト入力でのみ機能します。私はこれをFirefoxとChromeで動作させています。IE は clipboardData オブジェクトを使用できます (これはこのハックよりも望ましい方法です)。

HTML のどこかに、任意に大きな行と列の属性を持つ textarea 要素を作成する必要があります。' clipboard-textarea ' 要素は、貼り付けおよびコピーされたデータの保持領域になります。いくつかのスタイル属性を使用して要素を非表示にします。

スクリプト:

var desiredClipboardContents = 'It works';

function onCopyKeyPressed() {
   // The trick here is to populate the textarea with
   // the text you want copied before the user releases
   // the copy keystroke.
   var textarea = document.getElementById('clipboard-textarea');
   textarea.value = desiredClipboardContents;
   textarea.focus();
   textarea.select();
}

function onPasteKeyPressed() {
   var textarea = document.getElementById('clipboard-textarea');
   textarea.value = '';
   textarea.focus();
   // The trick here is to delay slurping the content
   // that arrives in the textarea element until after
   // the paste keystroke is completed. The 750 ms timeout
   // provides the necessary delay.
   setTimeout("finishedPasting", 750);
}

function finishedPasting() {
   var textarea = document.getElementById('clipboard-textarea');
   alert("Received from clipboard-paste: " + textarea.value);
}
于 2009-01-30T22:41:08.930 に答える