1

Тема: 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");

}

}

2 (изменено: Ядрён, 2014-03-10 13:10:15)

Re: JS: Переводчик страниц для браузера Maxthon

Вот  это расширение полностью.

3 (изменено: tyz.92, 2015-04-28 22:46:08)

Re: JS: Переводчик страниц для браузера Maxthon

Вот мое расширение http://extension.maxthon.com … ew_id=2848 для перевода страниц по нажатию