2020年の更新
最近のすべてのブラウザで機能するソリューション。
document.addEventListener('copy', (event) => {
const pagelink = `\n\nRead more at: ${document.location.href}`;
event.clipboardData.setData('text', document.getSelection() + pagelink);
event.preventDefault();
});
Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br/>
<textarea name="textarea" rows="7" cols="50" placeholder="paste your copied text here"></textarea>
[古い投稿-2020年の更新前]
コピーしたWebテキストに追加情報を追加するには、主に2つの方法があります。
1.選択の操作
アイデアはを監視し、copy event
非表示のコンテナに追加情報をに追加しdom
、選択範囲をに拡張することです。
このメソッドは、c.bavotaによるこの記事を基にしています。より複雑なケースについては、jitbitのバージョンも確認してください。
- ブラウザーの互換性:すべての主要なブラウザー、IE> 8。
- デモ:jsFiddleデモ。
- JavaScriptコード:
function addLink() {
//Get the selected text and append the extra info
var selection = window.getSelection(),
pagelink = '<br /><br /> Read more at: ' + document.location.href,
copytext = selection + pagelink,
newdiv = document.createElement('div');
//hide the newly created container
newdiv.style.position = 'absolute';
newdiv.style.left = '-99999px';
//insert the container, fill it with the extended text, and define the new selection
document.body.appendChild(newdiv);
newdiv.innerHTML = copytext;
selection.selectAllChildren(newdiv);
window.setTimeout(function () {
document.body.removeChild(newdiv);
}, 100);
}
document.addEventListener('copy', addLink);
2.クリップボードの操作
アイデアはcopy event
、クリップボードデータを監視して直接変更することです。これはclipboardData
プロパティを使用して可能です。このプロパティは、のすべての主要ブラウザで使用できますread-only
。このsetData
メソッドはIEでのみ使用できます。
function addLink(event) {
event.preventDefault();
var pagelink = '\n\n Read more at: ' + document.location.href,
copytext = window.getSelection() + pagelink;
if (window.clipboardData) {
window.clipboardData.setData('Text', copytext);
}
}
document.addEventListener('copy', addLink);