Merge pull request #7 from ispedals/firefox

Firefox
This commit is contained in:
Alex Yatskov 2016-06-20 10:00:01 -07:00 committed by GitHub
commit 261914328f
7 changed files with 52 additions and 7 deletions

View File

@ -1,6 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<body> <body>
<script src="js/polyfill-gecko.js"></script>
<script src="../lib/handlebars.min.js"></script> <script src="../lib/handlebars.min.js"></script>
<script src="js/templates.js"></script> <script src="js/templates.js"></script>
<script src="js/dictionary.js"></script> <script src="js/dictionary.js"></script>

View File

@ -0,0 +1,15 @@
// Gecko does not currently support chrome.storage.sync, use storage.local instead
// https://bugzilla.mozilla.org/show_bug.cgi?id=1220494
if (!chrome.storage.sync) {
chrome.storage.sync = chrome.storage.local;
}
// Gecko does not currently support chrome.runtime.onInstalled, just ignore calls to it
// (https://bugzilla.mozilla.org/show_bug.cgi?id=1252871)
if (!chrome.runtime.onInstalled) {
chrome.runtime.onInstalled = {
'addListener' : function(){},
'hasListener' : function(){},
'removeListener' : function(){}
};
}

View File

@ -46,8 +46,17 @@ class Translator {
const pendingLoads = []; const pendingLoads = [];
for (let key of files) { for (let key of files) {
/*
Spidermonkey does not implement lexical bindings for for-of loop
(see https://bugzilla.mozilla.org/show_bug.cgi?id=449811)
so we need to manually make a new declaration for key.
Otherwise key will always remain the same in the callback to loadData
and the dictionary data will not be set correctly
*/
let key_ = key;
pendingLoads.push(key); pendingLoads.push(key);
Translator.loadData(this.paths[key], (response) => { Translator.loadData(this.paths[key], (response) => {
let key = key_
switch (key) { switch (key) {
case 'rules': case 'rules':
this.deinflector.setRules(JSON.parse(response)); this.deinflector.setRules(JSON.parse(response));
@ -228,6 +237,7 @@ class Translator {
static loadData(url, callback) { static loadData(url, callback) {
const xhr = new XMLHttpRequest(); const xhr = new XMLHttpRequest();
xhr.overrideMimeType("application/json");
xhr.addEventListener('load', () => callback(xhr.responseText)); xhr.addEventListener('load', () => callback(xhr.responseText));
xhr.open('GET', chrome.extension.getURL(url), true); xhr.open('GET', chrome.extension.getURL(url), true);
xhr.send(); xhr.send();

View File

@ -163,6 +163,7 @@
<script src="../lib/jquery-2.2.2.min.js"></script> <script src="../lib/jquery-2.2.2.min.js"></script>
<script src="../lib/bootstrap-3.3.6-dist/js/bootstrap.min.js"></script> <script src="../lib/bootstrap-3.3.6-dist/js/bootstrap.min.js"></script>
<script src="js/polyfill-gecko.js"></script>
<script src="js/options.js"></script> <script src="js/options.js"></script>
<script src="js/options-form.js"></script> <script src="js/options-form.js"></script>
</body> </body>

View File

@ -62,10 +62,8 @@ class Popup {
return; return;
} }
const doc = this.popup.contentDocument; const doc = this.popup;
doc.open(); doc.srcdoc=content;
doc.write(content);
doc.close();
} }
sendMessage(action, params, callback) { sendMessage(action, params, callback) {

View File

@ -16,6 +16,19 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
// Polyfill caretRangeFromPoint() using the newer caretPositionFromPoint()
if (!document.caretRangeFromPoint){
document.caretRangeFromPoint = function polyfillcaretRangeFromPoint(x,y){
let range = document.createRange();
let position = document.caretPositionFromPoint(x,y);
if (!position) {
return null;
}
range.setStart(position.offsetNode, position.offset);
range.setEnd(position.offsetNode, position.offset);
return range;
};
}
class Range { class Range {
constructor(range) { constructor(range) {

View File

@ -15,8 +15,10 @@
"css": ["fg/css/client.css"] "css": ["fg/css/client.css"]
}], }],
"minimum_chrome_version": "45.0.0.0", "minimum_chrome_version": "45.0.0.0",
"options_page": "bg/options.html", "options_ui": {
"permissions": ["storage"], "page": "bg/options.html"
},
"permissions": ["*://127.0.0.1/*", "storage"],
"web_accessible_resources": [ "web_accessible_resources": [
"fg/css/frame.css", "fg/css/frame.css",
"fg/img/add_kanji.png", "fg/img/add_kanji.png",
@ -26,5 +28,10 @@
"fg/js/frame.js", "fg/js/frame.js",
"fg/ttf/kanji-stroke-orders.ttf", "fg/ttf/kanji-stroke-orders.ttf",
"fg/ttf/vl-gothic-regular.ttf" "fg/ttf/vl-gothic-regular.ttf"
] ],
"applications": {
"gecko": {
"id": "yomichan-gecko@example.com"
}
}
} }