現在のページのURLとタイトル、選択範囲テキストをコピーするブックマークレット(IE非対応)を作成。HTML形式版は以下のような形式でコピーされ、そのままリンクとして貼り付けられる。
<a href="URL">タイトル</a> - 選択範囲テキスト
テキスト形式版は以下のような形式でコピーされる。
タイトル
URL
選択範囲テキスト
Markdown形式版は以下のような形式でコピーされる。
[タイトル](URL)
選択範囲テキスト
2021年の「URLとタイトルをコピーするブックマークレット(IE非対応)」に、HTML形式版を追加したものです。
現在のページをコピー(HTML形式)
javascript:(function(){var d=document,getSelectionText=function(){var e=window.getSelection,k=d.getSelection,x=d.selection;return e?e().toString():(k?k():(x?x.createRange().text:''))},s=getSelectionText(),a='<a href="'+d.URL+'">'+d.title+'</a>',result=a+(s.length?' - '+s:'');navigator.clipboard.write([new ClipboardItem({"text/html":new Blob([result],{type:"text/html"})})]).then(function(){alert('リンクをHTML形式でコピーしました')}).catch(function(error){alert('コピーに失敗しました: '+((error&&error.message)||'不明なエラー'))})})();
以下のような形式でコピーされる。
<a href="URL">タイトル</a> - 選択範囲テキスト
改行削除前のコードは以下。
javascript:(function() {
var d = document;
var getSelectionText = function() {
var e = window.getSelection;
var k = d.getSelection;
var x = d.selection;
return e ? e().toString() : (k ? k() : (x ? x.createRange().text : ''));
};
var s = getSelectionText();
var a = '<a href="' + d.URL + '">' + d.title + '</a>';
var result = a + (s.length ? ' - ' + s : '');
navigator.clipboard.write([
new ClipboardItem({
"text/html": new Blob([result], { type: "text/html" })
})
]).then(function() {
alert('リンクをHTML形式でコピーしました');
}).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)),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) || 'コピーに失敗しました')})})();
以下のような形式でコピーされる。
タイトル
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));
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) || 'コピーに失敗しました')
})
}
)();
現在のページをコピー(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) || 'コピーに失敗しました')})})();
以下のような形式でコピーされる。
[タイトル](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));
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) || 'コピーに失敗しました')
})
}
)();
おわりに
作成経緯については2021年版の「URLとタイトルをコピーするブックマークレット(IE非対応)」の通りで、これにHTML形式版を追加したものです。IE非対応、あとHTTPSではない(HTTPの)ページでも動かない気がしますが、その辺は割切りました。諸々各所からお借りしたコードと生成AIに作成したコードをアレンジしたもので、先人には多々感謝。