英語サイトを読む際、英単語を翻訳サイトにコピペしながら読んでいくのはめんどい。
調べてみると、Firefoxアドオンはテキストエディタでいじることで作れるとのこと、
単語をマウスで選択->右クリックメニュー「アルク英辞郎で調べる」で
翻訳サイトを開くアドオンを作ってみました。
こちらに置いています。
ファイル構成
○chrome.manifest
○install.rdf
○contentフォルダ
├alc_eijiro.js
└alc_eijiro.xul
3つの○を1つのzipファイルにまとめて固めます。
拡張子を.zipから.xpiに変え、Firefoxにドラッグ&ドロップでインストール出来ます。
chrome.manifest
content alc_eijiro content/ overlay chrome://browser/content/browser.xul chrome://alc_eijiro/content/alc_eijiro.xul
xulの在処を記したファイルという感じですね。
install.rdf
<?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> <Description about="urn:mozilla:install-manifest"> <em:id>{04d2bb32-d7c0-4ee8-a5b9-f70798dda4f0}</em:id> <em:name>SPACE ALC EIJIRO OPEN</em:name> <em:version>1.0</em:version> <em:description>選択した単語をALC英辞郎で開きます</em:description> <em:creator>ロフトくん</em:creator> <em:type>2</em:type> <em:targetApplication> <Description> <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <em:minVersion>1.0</em:minVersion> <em:maxVersion>4.*</em:maxVersion> </Description> </em:targetApplication> </Description> </RDF>
いじったのは以下だけです。
・em:id
適当なGUID値にしました。
GUID生成ツールや生成サイトで作成出来ます。
・em:name
アドオンの名前です。アドオン一覧画面に出ます。
・em:version
アドオンのバージョンです。アドオン一覧画面に出ます。
・em:description
アドオンの説明です。アドオン一覧画面に出ます。
・em:creator
作者名です。
alc_eijiro.js
function alc_eijiro(){ var w = window._content; var d = w.document; //var txt = '<a href="' + d.location.href + '">' + d.title + '</a>'; //const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper); //CLIPBOARD.copyString(txt); var word = d.getSelection(); if (word == '') { //選択文字列がない場合はクリップボードを覗く var clip = get_clipboard_text(); if(clip == '') { var url = 'http://eow.alc.co.jp/'; } else { var url = 'http://eow.alc.co.jp/'+ clip + '/'; } } else { //var url = 'http://eow.alc.co.jp/' + word + '/UTF-8/?ref=sa'; var url = 'http://eow.alc.co.jp/' + word + '/'; } //window.open(url, 'eijiro'); openUILinkIn( url, 'tab'); //document.getSelection(); } //const Cc = Components.classes; //const Ci = Components.interfaces; function get_clipboard_text() { // get clipboard text try { var clip = Cc["@mozilla.org/widget/clipboard;1"].createInstance(Ci.nsIClipboard); var trans = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable); trans.addDataFlavor("text/unicode"); clip.getData(trans, clip.kGlobalClipboard); var str = new Object(); var len = new Object(); trans.getTransferData("text/unicode", str, len); if ( str ) { return str.value.QueryInterface(Ci.nsISupportsString).toString(); } else { return; } } catch(ex) { return; } }
javascriptによる機能の実装です。
右クリックメニューで「アルク英辞郎で調べる」が選択されると呼ばれる関数です。
選択された文字列を取得し、ALCのURLにくっつけてタブで開きます。
window.open(url, ‘eijiro’);だと新規ウィンドウで開かれたので、
openUILinkIn( url, ‘tab’);として新規タブで開くようにしています。
なお、マウス選択された文字列がない場合は、クリップボードに格納された文字列を使います。
英語のPDFファイルを読むときなんかにも使えますね。
alc_eijiro.xul
<?xml version="1.0"?> <overlay id="alc_eijiro" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/x-javascript" src="chrome://alc_eijiro/content/alc_eijiro.js"> </script> <keyset id="mainKeyset"> <key id="alc_eijiro" modifiers="shift" key="U" oncommand="alc_eijiro();"/> </keyset> <popup id="contentAreaContextMenu"> <menuitem id="alc_eijiro" label="アルク英辞郎で調べる" accesskey="U" insertafter="context-bookmarkpage" oncommand="alc_eijiro();"/> </popup> </overlay>
アドオンの画面デザインの実装です。
右クリックメニューで「アルク英辞郎で調べる」が選択されたら関数alc_eijiroを呼びます。
ちなみに英→日、日→英両方向いけます(ALC 英辞郎が対応しているので)。
以下サイト記事を参考にしました。
http://relaxuma.blogspot.com/2009/01/firefox.html
http://d.hatena.ne.jp/LukeSilvia/20080313/1205424352