Тема: JS: Переводчик страниц для браузера Maxthon
Доброго времени суток. Есть расширение переводчика страниц для браузера Maxthon.Оно работает не правильно переводит все страницы подряд и русские и зарубежные. А можно как нибудь сделать проверку на русские и зарубежные сайты ,что бы на русских сайтах (Banner) не запускался.В расширении 3 файла , я не знаю в каком нужно сделать изменения, по этому выкладываю все 3 файла.
mstranslator.js
//Google ????
'use strict';
((function() {
var runtime = (window.external.mxGetRuntime) ? window.external.mxGetRuntime() : null;
//????
var userLang = (runtime) ? runtime.locale.getSystemLocale() : navigator.language;
//?????
var injection = function (userLang) {
var pageLang = 'auto'; //????
var autoTrans = true; //????
var GUID = '{EB4828F0-271D-4e4a-B846-53D4285F4DDA}'; //from def.json
var uid = GUID.slice(1, -1).replace(/-/g, '');
var teId = 'TE_' + uid;
var cbId = 'TECB_' + uid;
function doScript(win) {
function show() {
win.setTimeout(function() {
win[teId].showBanner(autoTrans);
}, 10);
}
function newElem() {
var elem = new win.google.translate.TranslateElement({
autoDisplay: false,
floatPosition: 0,
multilanguagePage: true,
pageLanguage: pageLang
});
return elem;
}
if (win[teId]) {
show();
} else {
if (!win.google || !win.google.translate ||
!win.google.translate.TranslateElement) {
if (!win[cbId]) {
win[cbId] = function() {
win[teId] = newElem();
show();
};
}
var doc = win.document;
var script = doc.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
script.src = '//translate.google.com/translate_a/element.js?cb=' +
encodeURIComponent(cbId) + '&hl=' + userLang;
var heads = doc.getElementsByTagName('head');
if (heads.length === 0) {
var head = doc.documentElement.insertBefore(doc.createElement('head'), doc.documentElement.firstChild);
} else {
var head = heads[0];
}
head.appendChild(script);
}
}
}
//?? Frames
function frmSplit(win) {
var e;
try {
if (win.location.href == 'about:blank') {
return;
}
} catch (e) {
return;
}
doScript(win);
var frms = win.frames;
var frmLen = frms.length;
for (var j = 0; j < frmLen; j++) {
try {
frmSplit(frms[j]);
} catch (e) {}
}
}
frmSplit(self);
};
//???????
function injector() {
var doc = window.document;
if (!doc.body) { //XML
return;
}
var script = doc.createElement('script');
script.type = 'text/javascript';
var text = '((' + injection + ')("' + userLang + '"));';
if (script.addEventListener) {
script.appendChild(doc.createTextNode(text));
} else { //IE <= 8
script.text = text;
}
var heads = doc.getElementsByTagName('head');
if (heads.length === 0) {
var head = doc.documentElement.insertBefore(doc.createElement('head'), doc.documentElement.firstChild);
} else {
var head = heads[0];
}
head.appendChild(script);
setTimeout(function(){head.removeChild(script);}, 100);
}
injector();
})());
def.json
[
{
"type": "extension",
"frameworkVersion":"1.0.6",
"version":"5.4",
"guid": "{14b63894-fc55-4645-ae7e-c8e31b458ab4}",
"name": "????",
"icon": "icon",
"title": {
"en": "MicrosoftTranslator",
"zh-cn": "????",
},
'author':{
'name':'By Tony',
'email':'tony25142000@yahoo.com.cn'
},
'description':{
'zh-cn':'????',
'en':'MicrosoftTranslator'
},
'config' : 'config.html',
'permissions' : {
'httpRequest': [
'www.bing.com',
'api.microsofttranslator.com'
]
},
"actions": [
{
"type":"panel",
"icon": "icon",
"entryPoints":["toolbar","sidebar"],
"main":"menu.html",
"name":"MicrosoftTranslator",
"title": "????",
"allowPin":true,
"resizable":true,
"width":{
"default":280,
"min":120,
"max":340
},
"height": {
"default": 120,
"min": 100,
"max": 200
}
},
{
"type": "script",
"entryPoints": [
"doc_end"
],
"js": [
"checkautoload.js"
],
"include": [
"*"
],
"includeFrames": false
}
]
}
]
checkautoload.js
if(window.location.protocol=="http:"||window.location.protocol=="https:"){var rt=window.external.mxGetRuntime();var browser=rt.create("mx.browser");if(rt.storage.getConfig("tolan")==""){rt.storage.setConfig("tolan","zh-chs")}if(rt.storage.getConfig("delayclose")==""){rt.storage.setConfig("delayclose","15000")}if(rt.storage.getConfig("wordtranslatorhotkey")==""){rt.storage.setConfig("wordtranslatorhotkey",87)}if(rt.storage.getConfig("mstranslatorhotkey")==""){rt.storage.setConfig("mstranslatorhotkey",84)}if(rt.storage.getConfig("mstwautodetect")==""){rt.storage.setConfig("mstwautodetect","autodetect");}var wordtranslator=rt.storage.getConfig("wordtranslator");var mstranslator=rt.storage.getConfig("mstranslator");if(mstranslator=="autoload"){browser.injectScriptFile("mstranslator.js")}else{rt.storage.setConfig("mstranslator","noautoload")}if(wordtranslator=="autoload"){browser.injectScriptFile("wordtranslator.js")}else{rt.storage.setConfig("wordtranslator","noautoload")}var autoloadwordtranslatorhotkey=rt.storage.getConfig("wordtranslatorhotkey");var autoloadmstranslatorhotkey=rt.storage.getConfig("mstranslatorhotkey");var keycodetokey={"65":"a","66":"b","67":"c","68":"d","69":"e","70":"f","71":"g","72":"h","73":"i","74":"j","75":"k","76":"l","77":"m","78":"n","79":"o","80":"p","81":"q","82":"r","83":"s","84":"t","85":"u","86":"v","87":"w","88":"x","89":"y","90":"z","48":"0","49":"1","50":"2","51":"3","52":"4","53":"5","54":"6","55":"7","56":"8","57":"9"};if(typeof(keycodetokey[autoloadwordtranslatorhotkey])!="undefined"&&typeof(keycodetokey[autoloadmstranslatorhotkey])!="undefined"){document.addEventListener('keydown',function(e){if(!e.shiftKey&&e.ctrlKey&&e.altKey){if(e.keyCode==autoloadwordtranslatorhotkey){browser.injectScriptFile("wordtranslator.js");return}if(e.keyCode==autoloadmstranslatorhotkey){browser.injectScriptFile("mstranslator.js");return}}},false)}
if(rt.storage.getConfig("mstwautodetect")=="autodetect")
{
var MTWdiv=document.createElement("div");
}
}