英語サイトを読む際、英単語を翻訳サイトにコピペしながら読んでいくのはめんどい。
調べてみると、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