F'fox Extension Example js
In the DOM and Events Task, there is a reference to Firefox Extension development.
In fact there is a related Study Group in formation http://new.p2pu.org/en/groups/mozilla-jetpack/.
I am just starting to have a look at this myself and thought it would be of interest to post the javascript code used in the introductory material for an add-on that will add a menu item to Firefox's context menu that causes replacement of selected text with its English translation.
<span>
// Import the APIs we need.
var
contextMenu = require(
"context-menu"
);
var
request = require(
"request"
);
var
selection = require(
"selection"
);
exports.main =
function
(options, callbacks) {
console.log(options.loadReason);
// Create a new context menu item.
var
menuItem = contextMenu.Item({
label:
"Translate Selection"
,
// Show this item when a selection exists.
context: contextMenu.SelectionContext(),
// When this item is clicked, post a message to the item with the
// selected text and current URL.
contentScript:
'self.on("click", function () {'
+
' var text = window.getSelection().toString();'
+
' self.postMessage(text);'
+
'});'
,
// When we receive the message, call the Google Translate API with the
// selected text and replace it with the translation.
onMessage:
function
(text) {
if
(text.length == 0) {
throw
(
"Text to translate must not be empty"
);
}
console.log(
"input: "
+ text)
var
req = request.Request({
url:
"<a href="
http:
//ajax.googleapis.com/ajax/services/language/translate">http://ajax.googleapis.com/ajax/services/language/translate</a>",
content: {
v:
"1.0"
,
q: text,
langpair:
"|en"
},
onComplete:
function
(response) {
translated = response.json.responseData.translatedText;
console.log(
"output: "
+ translated)
selection.text = translated;
}
});
req.get();
}
});
};
exports.onUnload =
function
(reason) {
console.log(reason);
};
</span>
As I work through through the material I might try and explain what is going on here (can't say when).
Anyone else looking into it can chime in, of course.