SafariでタイトルをコピーするBookmarkletを作成する
Redmineのタイトルをコピーする
Redmineのチケットタイトルをコピーしたい場合BookmarkletでJavaScriptを実行することで実現できる。
Safariでクリップボードにコピーする
SafariではJavaScriptでクリップボードにテキストをコピーしようとすると一度textarea
に貼り付けてからコピーコマンドを実行する必要がある。
textarea
のテキストをコピーするため、リンク付きのテキストでコピーできず、プレーンテキストになる。
javascript:
(function () {
var body = document.getElementsByTagName("body")[0];
var [, title=document.title] = document.title.match(/(.*#\d :.*) - .*? - Redmine for .*/) || [];
var textarea = document.createElement("textarea");
textarea.textContent = title;
body.appendChild(textarea);
textarea.contentEditable = true;
textarea.readOnly = false;
textarea.setSelectionRange(0, 999999);
document.execCommand("copy");
body.removeChild(textarea);
})();
Chromeなどほかのブラウザでコピーする
(function () {
function listener(e) {
var [, title=document.title, text=""] = document.title.match(/.*(#\d+)(:.*) - .*? - Redmine for .*/) || [];
e.clipboardData.setData("text/html", "<a href='" + document.URL + "'>" + title + "</a>" + text);
e.clipboardData.setData("text/plain", title + text);
e.preventDefault();
}
document.addEventListener("copy", listener);
document.execCommand("copy");
document.removeEventListener("copy", listener);
})();