現在のページのURLとタイトル、選択範囲テキストをコピーするブックマークレット(IE非対応)を作成。テキスト形式版は以下のような形式でコピーされる。
タイトル
URL
選択範囲テキスト
Markdown形式版は以下のような形式でコピーされる。
[タイトル](URL)
選択範囲テキスト
現在のページをコピー(テキスト形式)
javascript:(function copyToClipboard(text) {var d=document,k=d.getSelection,x=d.selection,e=window.getSelection,s=new String(e?e():(k)?k():(x?x.createRange().text:0)),a=d.title+"\n"+d.URL+(s.length?"\n"+s:"");return navigator.clipboard.writeText(a).then(function() {alert('コピーしました')}).catch(function(error) {alert((error && error.message) || 'コピーに失敗しました')})})();
改行削除前のコードは以下。
javascript:(
function copyToClipboard(text) {
var d=document,k=d.getSelection,x=d.selection,e=window.getSelection,s=new String(e?e():(k)?k():(x?x.createRange().text:0));
var t=d.title+"\n"+d.URL+(s.length?"\n"+s:"");
return navigator.clipboard.writeText(t).then(function() {
alert('コピーしました')
}).catch(function(error) {
alert((error && error.message) || 'コピーに失敗しました')
})
}
)();
以下のような形式でコピーされる。
タイトル
URL
選択範囲テキスト
現在のページをコピー(Markdown形式)
javascript:(function copyToClipboard(text) {var d=document,k=d.getSelection,x=d.selection,e=window.getSelection,s=new String(e?e():(k)?k():(x?x.createRange().text:0));var t="["+d.title+"]("+d.URL+")"+(s.length?"\n"+s:"");return navigator.clipboard.writeText(t).then(function() {alert('コピーしました')}).catch(function(error) {alert((error && error.message) || 'コピーに失敗しました')})})();
改行削除前のコードは以下。
javascript:(
function copyToClipboard(text) {
var d=document,k=d.getSelection,x=d.selection,e=window.getSelection,s=new String(e?e():(k)?k():(x?x.createRange().text:0));
var t="["+d.title+"]("+d.URL+")"+(s.length?"\n"+s:"");
return navigator.clipboard.writeText(t).then(function() {
alert('コピーしました')
}).catch(function(error) {
alert((error && error.message) || 'コピーに失敗しました')
})
}
)();
以下のような形式でコピーされる。
[タイトル](URL)
選択範囲テキスト
おわりに
だいぶ昔に タイトル URL - 選択範囲テキスト
とか [タイトル](URL) - 選択範囲テキスト
でコピーするブックマークレットを作って頻用してたけど、改行区切りにしたいなと思ってた。「JavaScript でクリップボードにテキストをコピーする (2021年版) | MSeeeeN」でIEを切り捨てればClipboard APIで改行込みテキストのコピーが簡単にできるらしいと知ったので、IE非対応で割切って作り直し。Microsoft Edgeでは使えてます(というかEdgeでしか試してないです)。選択範囲の取得は昔のブックマークレットからの転用で、これもそもそもどこかで紹介されてたコードを転用したものでした。出典を忘れてしまったけど、先人には多々感謝。