IDを持つ要素のリンクを生成するだけのFirefoxアドオンを作ったった
WindowsでFirefox Add-on開発 - とある地味なブログ
上の記事に引き続き、簡単なアドオンを作ってみました。
簡単すぎてむしろリンクすら生成していない。
概要およびダウンロード
Link Here :: Add-ons for Firefox
詳細
Link-Here/README.md at master · sujoyu/Link-Here · GitHub
コード
ディレクトリ構成は、cfx init
で生成したままです。
テストも書いてません(てへぺろ)
lib/main.js
メインの処理です。小さいですね。
var contextMenu = require("sdk/context-menu"); var windowUtils = require("sdk/window/utils"); var data = require("sdk/self").data; var menuItem = contextMenu.Item({ // コンテキストメニューの表示名 label: "Link Here", // コンテキストメニューに表示する条件 context: contextMenu.PredicateContext(function (context) { return context.targetID !== null; }), // コンテキストメニューがクリックされた時に実行されるスクリプト contentScriptFile: data.url("content-script.js"), // 上記スクリプトからメッセージを受け取った時の処理 onMessage: function (id) { var window = windowUtils.getFocusedWindow(); window.location.hash = "#" + id; } });
コンテキストメニューにメニューを追加するには、sdk/context-menu
を使います。
現在フォーカスが当たっているwindowを取得するには、sdk/window/util
の.getFocusedWindow()
を使います。
data/content-script.js
コンテキストメニューがクリックされた時に実行されるスクリプトです。
self.on("click", function (node) { var id = node.getAttribute("id"); self.postMessage(id); });
node
には Node - Web API インターフェイス | MDN が入っているので、ここからIDを取得し、メッセージを投げます。
ソースコードは sujoyu/Link-Here · GitHub にあります。