Merge branch 'master' of https://github.com/FooSoft/yomichan-chrome
This commit is contained in:
commit
30585892b8
@ -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>
|
||||||
|
15
ext/bg/js/polyfill-gecko.js
Normal file
15
ext/bg/js/polyfill-gecko.js
Normal 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(){}
|
||||||
|
};
|
||||||
|
}
|
@ -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();
|
||||||
|
@ -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>
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user