私はその質問が長い間前に投稿されたことを知っていますそれで、多分誰かがそれを見いだすだろう。
実際、Googleではシステムのクリップボードも使用していますが、それはやや難解です。キーボードショートカットを使用する場合は、コピー/貼り付け/カットイベントを取得できます。ウィンドウ:
window.addEventListener('copy', function (ev) {
console.log('copy event');
// you can set clipboard data here, e.g.
ev.clipboardData.setData('text/plain', 'some text pushed to clipboard');
// you need to prevent default behaviour here, otherwise browser will overwrite your content with currently selected
ev.preventDefault();
});
キーボードショートカットのライブ例:あなたはネイティブせずにクリップボードのデータにアクセスできないため、コンテキストメニューに問題があるhttp://jsfiddle.net/tyk9U/
残念ながら、これはキーボードショートカットのための唯一の解決策であり、(信頼できます)コピー/カット/ペーストイベント。しかし、Googleは興味深いトリックをしています。あなたがcontenteditable要素のためのコマンドを実行することを可能にするAPI document.execCommand()
があります。document.execCommand('copy')
によってそれを引き起こすことができるコマンド 'コピー'があります。しかし、Chromeのコンソールでこれを試すと、false
が返されます。私はちょっと時間をかけて調査しましたが、Chrome拡張機能がインストールされていることが判明しました。「Googleドライブ」と呼ばれています(chrome:// apps /に移動し、そこに表示されます)。 comとdocs.google.com。文書またはスプレッドシートを開き、コンソールdocument.execCommand('copy')
を入力してください - true
を返します。拡張機能をアンインストールすると、コンテキストメニューからクリップボード操作を使用することができなくなります。
あなたは非常に単純なマニフェストファイル(ここでは詳細https://developer.chrome.com/apps/first_app)を自分のためにこのようなアプリケーションを作成することができます:ここ
{
"manifest_version": 2,
"name": "App name",
"description": "App description",
"version": "1.0",
"app": {
"urls": [
"http://your.app.url.here/"
],
"launch": {
"web_url": "http://your.app.url.here/"
}
},
"icons": {
"128": "x-128.png"
},
"permissions": [
"clipboardRead",
"clipboardWrite"
]
}
「権限」フィールドには、クリップボード操作を可能にします。
これを有効にすると、document.execCommand('copy')
を実行すると動作します(true
が返されます)。しかし、これはすべてではありません - document.execCommand('copy')
クロムのトリガーイベントをコピーし、キーボードクリップボードのショートカットをキャッチするために使用されるのと同じコードでそれをキャッチすることができます。これはGoogleが現在行っていることです。
もちろん、この説明はChromeでのみ有効です。
どのブラウザをお使いですか? Chromeでは、メニューからCopy/Pasteを使用すると、少なくともこのエラーが発生します。http://imgur.com/8L5CRこれは、問題を解決していない*ということを意味します。 – Niklas
あなたは正しいです、今私は彼らが(通常のキーイベントを除く)システムのクリップボードを使用していないが、あなたのアカウントに結合されたWebクリップボードを作成して参照してください。 –