このソリューションは、目的の操作を呼び出すキーストロークに対してのみ機能します。ユーザーが関連するキーストロークを終了する前に、ユーザーのカーソルを 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);
}