BLOGTIMES
2017/11/24

Shortkeys と自作スクリプトの組み合わせで My CopyFixer と同等の機能を実現

  firefoxquantum  javascript 
このエントリーをはてなブックマークに追加

表示している Web サイトのサイト名と URL をコピーしてくれるアドオン「My CopyFixer」が Firefox Quantum で動かなくなってしまい、その良い代替が見つからないので、任意のキーボードショートカットを入力するとスクリプトを実行することができる Shortkeys と JavaScript を使って同等の機能を実装してみました。

JavaScript からクリップボードを利用するたメソッド( execCopy() )については「JavaScriptでクリップボードに文字をコピーする(ブラウザ)」から、選択部分を取り込むメソッド(getSelectText())については「選択した範囲を取得」から、それぞれ使わせていただきました。

コピーされる内容

今回作成したスクリプトを使うことでクリップボードに挿入される HTML は以下のような感じになります。
blockquote の部分については、選択部分がない場合にはクリップボードに挿入されません。

<a href="**URL**" title="**タイトル**">**タイトル**</a> <blockquote>**選択部分**</blockquote>

今回作成した JavaScript

以下のスクリプトを任意のショートカットで、Shortkeys に設定します。

// from https://qiita.com/simiraaaa/items/2e7478d72f365aa48356 function execCopy(string){ var temp = document.createElement('div'); temp.appendChild(document.createElement('pre')).textContent = string; var s = temp.style; s.position = 'fixed'; s.left = '-100%'; document.body.appendChild(temp); document.getSelection().selectAllChildren(temp); var result = document.execCommand('copy'); document.body.removeChild(temp); return result; } // from http://shanabrian.com/web/javascript/window-getselection.php var getSelectText = function() { if (window.getSelection) { return window.getSelection().toString(); } else if (document.selection) { return document.selection.createRange().text; } else { return ''; } }; var selected = getSelectText(); if( selected.length > 0 ){ execCopy('<a href="'+document.location+'" title="'+document.title+'">'+document.title+"</a>\n<blockquote>"+selected+'</blockquote>'); } else { execCopy('<a href="'+document.location+'" title="'+document.title+'">'+document.title+'</a>'); } //alert(selected);

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9775
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン