Выдернул из расширения Mar Mod перевод с заменой текста. Воткнул в контекстное меню для выделенного текста и добавил еще несколько пунктов:
Context translate(Firefox)
Добавляет пункты в контекстное меню
при выделенном тексте предлагает различные способы перевода выделенного
(как разными переводчиками так и с разным способом вывода)
при отсутствии выделения предлагает перевести страницу различными переводчиками как в текущей так и в новой вкладке.
Andrey_Krropotkin
okkamas_knife
Спасибо за прекрасную кнопку.
Но не все работает так, как бы хотелось.
1. Не во всех вариантах перевода задействован автовыбор языка исходного текста так как жестко забит исходный английский
2. Нельзя перевести кирилличные тексты и слова, отображаются крокозябры.
Можно ли это все добавить - автовыбор языка исходного текста во всех вариантах и возможность перевода кириллицы - тоже во всех вариантах контекстного меню?.. Плиз.
Отсутствует
щас должно работать по идее. кнопка переводит текст с заменой Bing, google
this. onclick = function (event) { if ( event. shiftKey) return; if (event. button == 2) { event. preventDefault (); event. stopPropagation (); js_.bing() } if (event. button == 0) { js_.google() } } var js_ = { google: function () { var doc = getBrowser (). contentDocument; sel = doc. defaultView. getSelection (); sel = escape (convertFromUnicode ("UTF-8", sel)) var url='http://translate.google.ru/?q='+sel+"&hl=ru"+"&langpair=auto|ru&tbb=1" xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var div_ = doc. createElement ('div'); div_.innerHTML =xmlhttp.responseText var TBODY_= div_.getElementsByClassName ("almost_half_cell")[0] var TBODY_=TBODY_. getElementsByTagName ("span") [0].textContent; var range = content.getSelection().getRangeAt(0); var ht=range.cloneContents(); range.deleteContents(); ht.textContent=TBODY_ range.insertNode(ht); } } xmlhttp.send(null); }, bing: function () { var url='http://www.microsofttranslator.com' xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var html_t = xmlhttp.responseText var ind1 =html_t.indexOf('Default.Constants.AjaxApiAppId') var st =html_t.slice(ind1+34,html_t.length) var ind2 =st.indexOf('*')+1 var st =st.slice(0,ind2) var doc = getBrowser (). contentDocument; var sel = doc. defaultView. getSelection (). toString (); sel = escape (convertFromUnicode ("UTF-8", sel)) var url1="http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId="+st+"&text=" var url=url1+sel+'&from=&to=ru&contentType=text/plain&ctr=RussianFederation&ref=IE8Activity&rgp=2560b528' xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var html_t = xmlhttp.responseText var html_t= html_t.replace(/"/g, ""); var range = content.getSelection().getRangeAt(0); var ht=range.cloneContents(); range.deleteContents(); ht.textContent=html_t range.insertNode(ht); } } xmlhttp.send(null); } } xmlhttp.send(null) } }
Отредактировано Ste_pan (18-02-2012 08:02:43)
Отсутствует
Ste_pan
Я вообще-то о другой кнопке говорил :
okkamas_knife пишет
Проблем с Гуглом нет, есть проблемы с Яндексом, Промтом, Лингво и Мейл.ру, а также с переводом кириллицы Bing-ом
... нужен код, определяющий язык текста страницы, в виде en, de, ru, fr и т.д.
Отредактировано LBra (18-02-2012 09:23:20)
Отсутствует
Спецы, подскажите по такому вопросу. Хочу продублировать родную мозилловскую кнопку На пред. страницу - На след. страницу на нижнюю панель. Как это сделать-то? Если через добавление новой кнопки, то какой код добавлять? Или может кто готовую сварганит?
Windows 10 LTSC
Отсутствует
Или может кто готовую сварганит?
Вот здесь вроде готовые: Firefox navigation buttons | custombuttons
pcxFirefox - лучшая сборка Лисы!
Отсутствует
Спецы, подскажите по такому вопросу. Хочу продублировать родную мозилловскую кнопку На пред. страницу - На след. страницу на нижнюю панель. Как это сделать-то? Если через добавление новой кнопки, то какой код добавлять? Или может кто готовую сварганит?
Кстати, тоже интересно как скопировать кнопку из расширения (например, встроенный переводчик из гугл тулбара)
и назначить этот код на новую кнопку в Custom Buttons?
Отредактировано leex (18-02-2012 14:02:47)
Отсутствует
страно у меня все работает ид я получаю динамически каждый раз при запросе переводаа не работает вообще или лабуду пишет вместо перевода?если лабуду то какую?
Разобрался: Bing из этой кнопки у меня не переводит из-за HTTPS Everywhere, которое заставляет обращаться к серверу по SSL
javascript:void(window.open('http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId=94AFF88F4C2FC81CAC01CC555363A36CAAF4C66B&contentType=text/plain&from=en&to=ru&text='+encodeURIComponent(document.getSelection())));
Отсутствует
Подправил кнопку Translate page/selected with Google от bunda1 в связи с новым скриптом google-translate.js
Автор в связи нововведениями Google использовал перенаправление через http://sitegetter.net:
Инициализация без изменений
Код:
/*Initialization Code*/ const UJS_TOOLBAR_ID = "ujs_toolbar"; const UJS_GOOGLE_TRANSLATE_FRAME_ID = "ujs_googletranslateframe"; function cbTranslatorButton (browser) { this. doc = browser. contentDocument; this. win = browser. contentDocument. defaultView; } cbTranslatorButton. prototype = { doc: null, win: null, toolbar: null, clse: null, frame: null, grabX: 0, origX: 0, grabY: 0, origY: 0, handleEvent: function (event) { switch (event. type) { case "mousedown": this. tbOnMouseDown (event); break; case "mousemove": this. tbOnMouseMove (event); break; case "mouseup": this. tbOnMouseUp (event); break; case "click": this. clseOnClick (event); break; case "load": this. frameOnLoad (event); break; default:; } }, tbOnMouseMove: function (event) { this. toolbar. style. left = this. origX + event. clientX - this. grabX + 'px'; this. toolbar. style. top = this. origY + event. clientY - this. grabY + 'px'; }, tbOnMouseUp: function (event) { this. doc. removeEventListener ('mousemove', this, false); this. toolbar. style. zIndex = 9997; }, tbOnMouseDown: function (event) { if (event. target == this. toolbar) { event. preventDefault (); this. toolbar. style. zIndex = 9998; this. grabX = event. clientX; this. grabY = event. clientY; this. origX = parseInt (this. toolbar. style. left); this. origY = parseInt (this. toolbar. style. top); this. doc. addEventListener ('mousemove', this, false); this. doc. addEventListener ('mouseup', this, false); } }, removeEventListener: function (element, eventType, captureFlag) { try { element. removeEventListener (eventType, this, captureFlag); } catch (err) {} }, removeElement: function (element) { try { element. parentNode. removeChild (element); } catch (err) {} }, clseOnClick: function (event) { this. clse. removeEventListener ('click', this, false); this. removeEventListener (this. toolbar, 'mousedown', false); this. removeEventListener (this. doc, 'mousemove', false); this. removeEventListener (this. doc, 'mouseup', false); this. removeEventListener (this. frame, 'load', false); this. removeElement (this. toolbar); this. removeElement (this. frame); this. frame = null; this. clse = null; this. toolbar = null; this. win = null; this. doc = null; }, ujs_createWindow: function (txt) { var doc = this. doc; var win = this. win; var h, w; var txtLen = txt. length; var tbId = UJS_TOOLBAR_ID; if (arguments. length > 2) tbId += arguments [2]; var toolbar = doc. getElementById (tbId); if (toolbar) toolbar. parentNode. removeChild (toolbar); toolbar = doc. createElement ('div'); this. toolbar = toolbar; toolbar. id = tbId; if (arguments. length == 5) { w = arguments [3]; h = arguments [4] } else { h = 15; w = 20; if (txtLen > 2000) { h = 50; w = 66 } else if (txtLen > 250) { h = 25; w = 33 }; h = parseInt (h * win. innerHeight / 30); w = parseInt (w * win. innerWidth / 50) }; var title = (arguments. length > 1) ?arguments [1]: '<a href="http://translate.google.com/" target="_blank" style="text-decoration:none;color:#000099;font:16px Times New Roman;">Google Translate</a>'; toolbar. innerHTML = '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAStJREFUOE+1k9tqhDAQhtOHqO37P4E3IlQFQQSvBBVEl1TBVVi1B+1C8XAx3QmNqIVqhBV+DEPmy8z8ycPX9Ruq6kLqqiRHvkfpiUjSMyGUJtB1HfR9D8MwCAlz6voNkEGCIGDJeZ5DURTCatoWNE0D4nk+jOMoDMBD8fDPpoGXu4OyLAPUutV1/N+KcPPNPaY4jidYktwG+hunlLL4ZmsI4EloxhxiGAY4jgNpmm6D8DQEcBj/I8SyrKnSzYr4bDzPm2CKoiwgu1rDTfN2eEWu6y4M2KxoPRNVVRcz4xXvdm0+k/nMwjDc5xraa9v2n5kgwDRNMdfQXtT6Us7jy9Z8n738Iw82O5/hUpag6zqQ0+kVmqZld0NUURSxl48M8v5xZQtZlg8Jc5HxA5fIE73hTda3AAAAAElFTkSuQmCC" title="Close" width="18" height="18"> ' + title + '<div></div>'; toolbar. setAttribute('style', 'position:fixed;background:white;display:block;visibility:hidden;left:0;top:0;height:auto;width:' + w + 'px;font:16px Times New Roman;border:1px solid gray;padding:3px;z-index:9997;overflow:visible;cursor:move;'); toolbar. addEventListener ('mousedown', this, false); var clse = toolbar. firstChild; this. clse = clse; clse. setAttribute ('style', 'float:right;background:white;padding:0;margin:0;border:none;cursor:pointer;'); clse. addEventListener ('click', this, false); var textbar = toolbar. lastChild; textbar. innerHTML = txt; textbar. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:' + h + 'px;width:auto;overflow:auto;cursor:text;'); doc. documentElement. appendChild (toolbar); var halfWidth = parseInt (toolbar. offsetWidth / 2); var strict = doc. compatMode == 'CSS1Compat'; var mX = (strict? doc. documentElement. clientWidth: doc. body. clientWidth) - toolbar. offsetWidth; var mY = (strict? doc. documentElement. clientHeight: doc. body. clientHeight) - toolbar. offsetHeight; var lastClickX = win. cbTranslateButton2X; var lastClickY = win. cbTranslateButton2Y; toolbar. style. left = ((lastClickX < mX + halfWidth)? (lastClickX > halfWidth? (lastClickX - halfWidth): 0): mX) + "px"; toolbar. style. top = ((lastClickY < mY)? lastClickY: mY) + "px"; toolbar. style. visibility = 'visible'; return textbar; }, frameOnLoad: function (event) { var fr = event. currentTarget; fr. removeEventListener ('load', this, false); var tbId = fr. id. substring (UJS_GOOGLE_TRANSLATE_FRAME_ID. length); var toolbar = this. doc. getElementById (UJS_TOOLBAR_ID + tbId); var frdoc = fr. contentDocument; var sl = frdoc.getElementById('nc_sl'), dl = frdoc.getElementById('nc_dl'), tl = frdoc.getElementById('nc_tl'); if(sl && dl && tl){ var status = ((dl.value || sl.value)+' -\u203A '+tl.value).toUpperCase(); }; var a = frdoc. getElementById ('nc_sl'); var title = (a && !/#808080/. test (a. innerHTML))? ' - ' + status: ''; var result = ''; var r = frdoc.getElementById('result_box'), s = frdoc.getElementById('source'), d = frdoc.getElementById('gt-res-dict'); if(r){ var p = r.getElementsByTagName('span'); for(var i = 0, n; n = p[i]; i++){ n.removeAttribute('onmouseover'); n.removeAttribute('onmouseout'); n.setAttribute('style', 'background-color:inherit;color:inherit;font-size:inherit;font-family:serif;'); }; result = r.innerHTML; }; if(s && d && d.getElementsByTagName('ol').length){ var a = d.getElementsByTagName('*'); for(var i = a.length; i--;){ var n = a[i]; switch(n.nodeName.toLowerCase()){ case 'ol': n.setAttribute('style', 'margin:1px 5px;padding:0;'); break; case 'li': n.setAttribute('style', 'margin:0;padding:1px 5px;font:12px Arial;list-style-type:none;float:left;font-weight:bold;'); break; case 'div': n.setAttribute('style', 'margin:0;padding:0 2px;font:12px Arial;white-space:nowrap;'); break; case 'a': case 'h3': n.parentNode.removeChild(n); break; } }; result = '<b><q>'+s.value+'</q></b>'+d.innerHTML; }; var ancor = toolbar. getElementsByTagName ("a") [0]; ancor. innerHTML += title; ancor. nextSibling. innerHTML = result; setTimeout ( function () { fr. parentNode. removeChild (fr); }, 0 ); }, google_translate: function (language) { var doc = this. doc; var win = this. win; var t = document. commandDispatcher. focusedWindow. getSelection (). toString (); var lng = (win. navigator. language == 'ru')? 'ru': 'en'; var encodeBase64 = function(str){ var chr1, chr2, chr3, rez = '', arr = [], i = 0, j = 0, code = 0; var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split(''); while(code = str.charCodeAt(j++)){ if(code < 128){ arr[arr.length] = code; } else if(code < 2048){ arr[arr.length] = 192 | (code >> 6); arr[arr.length] = 128 | (code & 63); } else if(code < 65536){ arr[arr.length] = 224 | (code >> 12); arr[arr.length] = 128 | ((code >> 6) & 63); arr[arr.length] = 128 | (code & 63); } else{ arr[arr.length] = 240 | (code >> 18); arr[arr.length] = 128 | ((code >> 12) & 63); arr[arr.length] = 128 | ((code >> 6) & 63); arr[arr.length] = 128 | (code & 63); } }; while(i < arr.length){ chr1 = arr[i++]; chr2 = arr[i++]; chr3 = arr[i++]; rez += chars[chr1 >> 2]; rez += chars[((chr1 & 3) << 4) | (chr2 >> 4)]; rez += chars[chr2 === undefined ? 64 : ((chr2 & 15) << 2) | (chr3 >> 6)]; rez += chars[chr3 === undefined ? 64 : chr3 & 63]; }; return rez; }; if (t && location. hostname != 'sitegetter.net') { this. ujs_createWindow ( (lng == 'ru'? '\u041F\u0435\u0440\u0435\u0432\u043E\u0434\u0438\u043C': 'Подождите идет перевод' ) + '\u2026', '<a href="http://translate.google.com/" target="_blank" style="text-decoration:none;color:#000099;font:16px Times New Roman;">Google перевод</a>', btoa (escape (t)) ); var gtfId = UJS_GOOGLE_TRANSLATE_FRAME_ID; var fr = doc. getElementById (gtfId); if (!fr) fr = doc. createElement ('iframe'); this. frame = fr; fr. setAttribute ('id', gtfId + btoa (escape (t))); fr. setAttribute ('frameborder', '0'); fr. setAttribute ('style', 'width:0px;height:0px;visibility:hidden;position:absolute;left:-999em;'); fr. setAttribute ( 'src', 'http://sitegetter.net/browse.php?u='+encodeBase64('://translate.google.com/translate_t?&hl=ru&text=' + encodeURIComponent (t) + '&langpair=' + language + '&tbb=1&ujs=gtt')+'&b=29&f=norefer&ujs=gtt' ); fr. addEventListener ('load', this, false); doc. documentElement. appendChild (fr); } else { getBrowser (). addTab ( 'http://translate.google.com/translate?u=' + escape (doc. location. href) + '&hl=' + lng + '&langpair=' + language + '&tbb=1' + (doc. charset? '&ie=' + doc. charset: ''), null, null ); } } }; var ct = getBrowser (). selectedTab; if (!ct. cbTranslateButton5) ct. cbTranslateButton5 = []; var translator = new cbTranslatorButton (getBrowser ()); ct. cbTranslateButton5. push (translator); translator. google_translate ("auto|ru");
Отредактировано Andrey_Krropotkin (19-02-2012 15:39:40)
На форуме
конечно, ссылок-то нету
Добавлено Вчера 03:36:47
сначала их надо извлечь
Ну так прочитайте мои требования к кнопке, потому что то, что вы предлагаете, в корне не подходит для меня.
Так кто может написать кнопочку для извлечения ссылок из исходного кода страниц?
Отредактировано 1fesFFFF (19-02-2012 01:37:48)
Отсутствует
Подправил кнопку Translate page/selected with Google от bunda1 в связи с новым скриптом google-translate.js
Автор в связи нововведениями Google использовал перенаправление через http://sitegetter.net:
bunda1 проверь пожалуйста код и работу
Ты просто супер, код отлично работает.
Я исправил кнопку Translate page/selected with Google
Отсутствует
okkamas_knife
под спойлером картинка с проблемой на ГисМетео кнопкой. Проверял на чистых профилях на FX3.6 portable, FX10, UX13.0a1
как бы избавиться от − </td>, излишних пробелов
и заодно шрифт жирным сделать
Отсутствует
dennius
Надо заменить код кнопки
var _this = this; // введите ниже код города,чтоб его узнать заходим на http://www.gismeteo.ru/ // выбираем свой город и в адресной строке смотрим. // например http://www.gismeteo.ru/city/daily/4368/ - 4368 москва. var citycod=4368; var fontcolora="#ff0000";//цвет верхней строки var fontcolorb="#FF0000";//цвет нижней строки var fullinfourl ="http://www.gismeteo.ru/city/busy/" + citycod + "/"; var urlday="http://www.gismeteo.ru/city/daily/" + citycod + "/"; var infor =[]; infor[citycod] = "wait"; _this.tooltipText=infor[citycod]; var blabla; var blabl; var bigwdata; var canvas = document. createElementNS ("http://www.w3.org/1999/xhtml", "canvas"); canvas. setAttribute ("id", "canvas"); canvas. setAttribute ("style", "min-width:20px;width:70px;max-width:70px;min-height:24px;height:24px;max-height:24px;font-weight:bold;"); canvas. setAttribute ("width", "70"); canvas. setAttribute ("height", "24"); _this. appendChild (canvas); _this. image = "data:"; _this. setAttribute ("class", ""); var pn = _this. parentNode; var ns = _this. nextSibling; var button = pn. removeChild (this); if (ns) pn. insertBefore (button, ns); else pn. appendChild (button); function draw() { var ctx = canvas.getContext('2d'); ctx.save(); ctx. clearRect (0, 0, 70, 24); ctx.restore(); var width = canvas.width; var height = canvas.height; var ctx = canvas.getContext('2d'); ctx.save(); ctx.translate(0, 9); ctx.fillStyle = fontcolora; ctx.mozTextStyle = "9pt sans serif"; ctx.mozDrawText(blabla); ctx.translate(0, 10); ctx.fillStyle = fontcolorb; ctx.mozTextStyle = "9pt sans serif"; ctx.mozDrawText(blabl); ctx.restore(); } function gettext(){ var xmlhttp function getweatherdata() { xmlhttp=GetXmlHttpObject(); if (xmlhttp==null) { alert ("Your browser does not support AJAX!"); return; } xmlhttp.onreadystatechange=stateChanged; xmlhttp.open("GET",urlday,true); xmlhttp.send(null); } function stateChanged() { if (xmlhttp.readyState==4) { var pogodaday=xmlhttp.responseText; var chkpoint='<h3 class="type'; var arrayOfStrings = pogodaday.split(chkpoint); pogodanow=arrayOfStrings[1] var chkpoint='<a class="icon fcast" href='; var arrayOfStrings = pogodanow.split(chkpoint); pogodanowz=arrayOfStrings[0] //--get city name var chkpoint='</h3>'; var arrayOfStrings = pogodanowz.split(chkpoint); cityname=arrayOfStrings[0]; cityname=cityname.substring(3); //--get now temp var chkpoint='<div class="temp">'; var arrayOfStrings = pogodanowz.split(chkpoint); nowtempz=arrayOfStrings[1] var chkpoint='<span'; var arrayOfStrings = nowtempz.split(chkpoint); nowtemp=arrayOfStrings[0]; nowtemp=nowtemp.replace(/−/g,"-"); nowtemp=nowtemp.replace(/<.*/g,""); //--get nowweather var chkpoint='<dt class="png" title="'; var arrayOfStrings = pogodanowz.split(chkpoint); nowweatherz=arrayOfStrings[1] var chkpoint='" style="background-image:'; var arrayOfStrings = nowweatherz.split(chkpoint); nowweather=arrayOfStrings[0] function getXmlHttpz(){ var xmlhttpz; try { xmlhttpz = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttpz = false; } } if (!xmlhttpz && typeof XMLHttpRequest!='undefined') { xmlhttpz = new XMLHttpRequest(); } return xmlhttpz; } var xmlhttpz = getXmlHttpz() xmlhttpz.open('GET', fullinfourl, true); xmlhttpz.onreadystatechange = function() { if (xmlhttpz.readyState == 4) { if(xmlhttpz.status == 200) { bigwdata = xmlhttpz.responseText; //----------get table var chkpoint='<div class="wdata-compact">'; var arrayOfStrings = bigwdata.split(chkpoint); var tablebig=arrayOfStrings[1]; var chkpoint='<ul class="wolinks wrap">'; var arrayOfStrings = tablebig.split(chkpoint); var tablebigok=arrayOfStrings[0]; //----get days var chkpoint='</th>'; var arrayOfStrings = tablebigok.split(chkpoint); var tabledayspre=arrayOfStrings[1]; var chkpoint='</thead>'; var arrayOfStrings = tabledayspre.split(chkpoint); var tabledays=arrayOfStrings[0]; var t=new Date(); var nowyear=1900+t.getYear(); var tabledays=tabledays.replace(/\sclass="weekend"/g,"") var tabledays=tabledays.replace(/<strong>/g,"."+nowyear) var tabledays=tabledays.replace(/<\/strong>/g,"") var tabledays=tabledays.replace(/<\/td>/g,"") var tabledays=tabledays.replace(/ПН/g," Понедельник__") var tabledays=tabledays.replace(/ВТ/g," Вторник__") var tabledays=tabledays.replace(/СР/g," Среда__") var tabledays=tabledays.replace(/ЧТ/g," Четверг__") var tabledays=tabledays.replace(/ПТ/g," Пятница__") var tabledays=tabledays.replace(/СБ/g," Суббота__") var tabledays=tabledays.replace(/ВС/g," Воскресенье__") var chkpoint='<td>'; var arrayOfStrings = tabledays.split(chkpoint); var day1="Сегодня, "+arrayOfStrings[1].replace(/__\n.+/g,""); var day2="Завтра, "+arrayOfStrings[2].replace(/__\n.+/g,""); var day3="Послезавтра, "+arrayOfStrings[3].replace(/__\n.+/g,""); var day4=arrayOfStrings[4].replace(/__\n.+/g,""); var day5=arrayOfStrings[5].replace(/__\n.+/g,""); //--------------- //-----get temperature var chkpoint='</th>'; var arrayOfStrings = tablebigok.split(chkpoint); var tabletemppre=arrayOfStrings[4]; var tabletemppre=tabletemppre.replace(/<td class="t.+">/g,"daytempДнём: ") var tabletemppre=tabletemppre.replace(/°<\/td>/g," C") var chkpoint='daytemp'; var arrayOfStrings = tabletemppre.split(chkpoint); for (i in arrayOfStrings) { arrayOfStrings[i]=arrayOfStrings[i].replace(/ C\s+/g," C"); arrayOfStrings[i]=arrayOfStrings[i].replace(/−/g,"-"); arrayOfStrings[i]=arrayOfStrings[i].replace(/<.*/g,""); } var tempday01=arrayOfStrings[1]; var tempday02=arrayOfStrings[2]; var tempday03=arrayOfStrings[3]; var tempday04=arrayOfStrings[4]; var tempday05=arrayOfStrings[5]; //---------------------- var chkpoint='</th>'; var arrayOfStrings = tablebigok.split(chkpoint); var tabletemppre=arrayOfStrings[5]; var tabletemppre=tabletemppre.replace(/<td class="t.+">/g,"nighttempНочью: ") var tabletemppre=tabletemppre.replace(/°<\/td>/g," C") var chkpoint='nighttemp'; var arrayOfStrings = tabletemppre.split(chkpoint); for (i in arrayOfStrings) { arrayOfStrings[i]=arrayOfStrings[i].replace(/ C\s+/g," C"); arrayOfStrings[i]=arrayOfStrings[i].replace(/−/g,"-"); arrayOfStrings[i]=arrayOfStrings[i].replace(/<.*/g,""); } var tempnight01=arrayOfStrings[1]; var tempnight02=arrayOfStrings[2]; var tempnight03=arrayOfStrings[3]; var tempnight04=arrayOfStrings[4]; var tempnight05=arrayOfStrings[5]; //-----------getpogoda var chkpoint='</th>'; var arrayOfStrings = tablebigok.split(chkpoint); var tablepogodapre=arrayOfStrings[3]; var chkpoint='title="'; var arrayOfStrings = tablepogodapre.split(chkpoint); var pogoda01=arrayOfStrings[1].replace(/"\swidth.+\n.+/g,""); var pogoda02=arrayOfStrings[2].replace(/"\swidth.+\n.+/g,""); var pogoda03=arrayOfStrings[3].replace(/"\swidth.+\n.+/g,""); var pogoda04=arrayOfStrings[4].replace(/"\swidth.+\n.+/g,""); var pogoda05=arrayOfStrings[5].replace(/"\swidth.+\n.+/g,""); //----------get davlenie var chkpoint='</th>'; var arrayOfStrings = tablebigok.split(chkpoint); var tablepogodapre=arrayOfStrings[6]; var chkpoint='<td>'; var arrayOfStrings = tablepogodapre.split(chkpoint); var davlenie01="Давление: "+arrayOfStrings[1].substring(0,3)+"мм.рт.ст."; var davlenie02="Давление: "+arrayOfStrings[2].substring(0,3)+"мм.рт.ст."; var davlenie03="Давление: "+arrayOfStrings[3].substring(0,3)+"мм.рт.ст."; var davlenie04="Давление: "+arrayOfStrings[4].substring(0,3)+"мм.рт.ст."; var davlenie05="Давление: "+arrayOfStrings[5].substring(0,3)+"мм.рт.ст."; //----------get vlazhn var chkpoint='</th>'; var arrayOfStrings = tablebigok.split(chkpoint); var tablepogodapre=arrayOfStrings[7]; var chkpoint='<td>'; var arrayOfStrings = tablepogodapre.split(chkpoint); var vlazhnost01="Влажность: "+arrayOfStrings[1].substring(0,2)+" %"; var vlazhnost02="Влажность: "+arrayOfStrings[2].substring(0,2)+" %"; var vlazhnost03="Влажность: "+arrayOfStrings[3].substring(0,2)+" %"; var vlazhnost04="Влажность: "+arrayOfStrings[4].substring(0,2)+" %"; var vlazhnost05="Влажность: "+arrayOfStrings[5].substring(0,2)+" %"; //----------get veter var chkpoint='</th>'; var arrayOfStrings = tablebigok.split(chkpoint); var tablepogodapre=arrayOfStrings[8]; var chkpoint='title="'; var arrayOfStrings = tablepogodapre.split(chkpoint); var wind01="Ветер: "+arrayOfStrings[1].replace(/<\/dd>.+\n.+/g,"").replace(/">.+<dd>/g,", ")+" м./с."; var wind02="Ветер: "+arrayOfStrings[2].replace(/<\/dd>.+\n.+/g,"").replace(/">.+<dd>/g,", ")+" м./с."; var wind03="Ветер: "+arrayOfStrings[3].replace(/<\/dd>.+\n.+/g,"").replace(/">.+<dd>/g,", ")+" м./с."; var wind04="Ветер: "+arrayOfStrings[4].replace(/<\/dd>.+\n.+/g,"").replace(/">.+<dd>/g,", ")+" м./с."; var wind05="Ветер: "+arrayOfStrings[5].replace(/<\/dd>.+\n.+/g,"").replace(/">.+<dd>/g,", ")+" м./с."; //----------sbor podskazki var inf01=day1+"\n"+tempday01+"\n"+tempnight01+"\n"+pogoda01+"\n"+wind01+"\n"+davlenie01+"\n"+vlazhnost01+"\n_______________________________\n"; var inf02=day2+"\n"+tempday02+"\n"+tempnight02+"\n"+pogoda02+"\n"+wind02+"\n"+davlenie02+"\n"+vlazhnost02+"\n_______________________________\n"; var inf03=day3+"\n"+tempday03+"\n"+tempnight03+"\n"+pogoda03+"\n"+wind03+"\n"+davlenie03+"\n"+vlazhnost03+"\n_______________________________\n"; var inf04=day4+"\n"+tempday04+"\n"+tempnight04+"\n"+pogoda04+"\n"+wind04+"\n"+davlenie04+"\n"+vlazhnost04+"\n_______________________________\n"; var inf05=day5+"\n"+tempday05+"\n"+tempnight05+"\n"+pogoda05+"\n"+wind05+"\n"+davlenie05+"\n"+vlazhnost05+"\n_______________________________\n"; infor[citycod] =cityname+"\n_______________________________\n"+inf01+inf02+inf03+inf04+inf05 _this.tooltipText=infor[citycod]; } } }; xmlhttpz.send(null); blabla = cityname+": "+nowtemp; blabl = nowweather; draw(); } } function GetXmlHttpObject() { if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari return new XMLHttpRequest(); } if (window.ActiveXObject) { // code for IE6, IE5 return new ActiveXObject("Microsoft.XMLHTTP"); } return null; } getweatherdata(); ;} gettext(); function checkupd(){ gettext(); setTimeout(checkupd,1800000); } setTimeout(checkupd,1800000); this.onclick = function(event) { if(event.button == 0) { getBrowser (). selectedTab = getBrowser (). addTab (urlday); } else if(event.button == 1) { gettext(); } };
Отсутствует
дравствуйте написал кнопку переводчик для себя по мативам Translate page/selected with Google от bunda1
кнопка работает так выдилил текст и не отпуская левую кнопку мыши шечек правой вылетает окошко с переводом
такие же действия без выделения пустое окошко с текстериа для в ввода
удерживая левую и прокрутка колесика заменить текст переводом ...........
проше написать код кнопки чем описание к ней
var THIS = this; var val = this. getAttribute ("id"); var mouse_ = { init: function() { var appcontent = document.getElementById("appcontent"); appcontent.addEventListener('DOMMouseScroll', this.callback, true); appcontent.addEventListener("DOMContentLoaded", mouse_.load, true); }, load: function(event) { var body_ = getBrowser (). contentDocument.body; if(!(body_ .fl_b)) { THIS .fl='' body_. addEventListener ('contextmenu',mouse_.mous_, true); body_. addEventListener ('mousedown',mouse_.mousedown_, true); body_. addEventListener ('mouseup',mouse_.onmouseup_, true); body_ .fl_b='1' }; }, mousedown_: function (event) { if (event. button == 0) { THIS.fl=1 } if (event. button == 2 && THIS.fl==1) { event. preventDefault (); event. stopPropagation (); } }, mous_: function (event) { if ( THIS.fl==1) { var doc = getBrowser (). contentDocument; var Mozila_Tr = doc. getElementsByClassName ("Mozila_Tr") var t = doc. defaultView. getSelection (). toString (); event. preventDefault (); event. stopPropagation (); if(Mozila_Tr.length==0) { var translator = new cbTranslatorButton (getBrowser ()); THIS.translator = translator translator. ujs_createWindow (event); } else { if(t) { THIS.translator. sel_tx (); } else { THIS.translator. write (); } } } }, onmouseup_: function (event) { if (event. button == 0) { THIS.fl=0 } }, Google: function () { var doc = getBrowser (). contentDocument; var sel=doc. defaultView. getSelection ().toString (); var url='http://translate.google.ru/?q='+sel+"&hl=ru"+"&langpair=auto|ru&tbb=1" xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var tml_ = doc. createElement ('TEXTAREA'); var html_t = xmlhttp.responseText var div_ = doc. createElement ('div'); div_.innerHTML =html_t var TBODY_= div_.getElementsByClassName ("almost_half_cell")[0] var TBODY_=TBODY_. getElementsByTagName ("span") [0].textContent; var range = content.getSelection().getRangeAt(0); var ht=range.cloneContents(); range.deleteContents(); ht.textContent=TBODY_ range.insertNode(ht); } } xmlhttp.send(null); return 1 }, callback: function (event) { if (event.detail==6&& THIS.fl==1) { mouse_.Google() event. preventDefault (); event. stopPropagation (); } if (event.detail==-6&& THIS.fl==1) { event. preventDefault (); event. stopPropagation (); mouse_.Google() } }, }; mouse_.init (); function cbTranslatorButton (browser) { this. doc = browser. contentDocument; this. win = browser. contentDocument. defaultView; } cbTranslatorButton. prototype = { doc: null, fram: null, win: null, toolbar: null, menulist: null, size_:null, grabX: 0, origX: 0, grabY: 0, origY: 0, Google: function () { var doc=this. doc var THIS=this var sel=THIS.sel() var sel=sel.toString (); var fram=THIS.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") if(TEXTAREA.length== 2) { if(!(TEXTAREA[0].value.length==0)) { var sel=TEXTAREA[0].value var sel=sel. toString (); var pattern = /\r\n|\r|\n/g; sel = escape (convertFromUnicode ("UTF-8", sel)) var sel = sel .replace(pattern, " "); } } var f=1 var H=this.height_(f,sel)+'px' var W=330+'px' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); var url='http://translate.google.ru/?q='+sel+"&hl=ru"+"&langpair=auto|ru&tbb=1" xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var tml_ = doc. createElement ('TEXTAREA'); var html_t = xmlhttp.responseText var div_ = doc. createElement ('div'); div_.innerHTML =html_t var TBODY_= div_.getElementsByClassName ("almost_half_cell")[0] var TBODY_=TBODY_. getElementsByTagName ("span") [0].textContent; if(TEXTAREA.length== 1) { TEXTAREA[0].value= TBODY_ } if(TEXTAREA.length== 2) { TEXTAREA[1].value= TBODY_ } } } xmlhttp.send(null); return 1 }, Bing: function () { var doc=this. doc var THIS=this var sel=THIS.sel(). toString (); var pattern = /\r\n|\r|\n/g; var sel = sel .replace(pattern, " "); var fram=THIS.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") if(TEXTAREA.length== 2) { if(!(TEXTAREA[0].value.length==0)) { var sel=TEXTAREA[0].value var sel=sel. toString (); var pattern = /\r\n|\r|\n/g; var sel = sel .replace(pattern, " "); } } var f=1 var H=this.height_(f,sel)+'px' var W=330+'px' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); sel = escape (convertFromUnicode ("UTF-8", sel)) var url='http://www.microsofttranslator.com' xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var html_t = xmlhttp.responseText var ind1 =html_t.indexOf('Default.Constants.AjaxApiAppId') var st =html_t.slice(ind1+34,html_t.length) var ind2 =st.indexOf('*')+1 var st =st.slice(0,ind2) var url1="http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId="+st+"&text=" var url=url1+sel+'&from=&to=ru&contentType=text/plain&ctr=RussianFederation&ref=IE8Activity&rgp=2560b528' xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var tml_ = doc. createElement ('TEXTAREA'); var html_t = xmlhttp.responseText var html_t= html_t.replace(/"/g, ""); if(TEXTAREA.length== 1) { TEXTAREA[0].value= html_t } if(TEXTAREA.length== 2) { TEXTAREA[1].value= html_t } } } xmlhttp.send(null); } } xmlhttp.send(null); return 1 }, Lingvo: function () { var THIS=this var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var html_1 = fram_doc. getElementsByTagName ("body")[0] var div = fram_doc. getElementsByTagName ("div") var label = fram_doc. getElementsByTagName ("label") var sel=this.sel() var sel=sel.toString (); var url='http://lingvopro.abbyyonline.com/ru/Search/en-ru/'+sel xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { function divv(id,slovar,div_len) { var id2="lupashust"+id var id1="'"+id2+"'" if(div_len===0) { var div1='<div id='+id1+'>' } else { var div1='<div id='+id1+' style="display: none">' } var osnov="if(document.getElementById("+id1+").style.display == 'none'){document.getElementById("+id1+").style.display = 'block';}else{document.getElementById("+id1+").style.display = 'none';}" var spOS='<label style="text-decoration:none;color:#483D8B;font:14px Times New Roman;cursor:pointer;" onclick="Javascript:'+osnov+'">'+slovar+'</label>' var osnov1=spOS+div1 return osnov1 } var html_t = xmlhttp.responseText var temp = doc. createElement ('div'); temp.innerHTML =html_t var div_col= temp. getElementsByClassName ("js-article-html") var length=div_col.length var div_len=div_col.length-1; var id=0 var kon ='</div><br>' var str=new String() for (;;) { var div_res_t= div_col[div_len] var slovar_t= div_res_t. getElementsByTagName ("a")[0] var slovar=slovar_t. textContent var tex_Span='<span style="color:red;text-decoration:underline;"align="right"> <span style="color:black">' div_res_t. getElementsByTagName ("h2")[0].style.display = 'none'; div_res_t. getElementsByTagName ("a")[0].innerHTML=tex_Span+'<h3>'+sel+'</h3>'+'</span></span>' div_res_t. getElementsByTagName ("a")[0].removeAttribute('href') var div_res=div_res_t.innerHTML var s_title=divv(id,slovar,div_len) var str =str+s_title+div_res+kon if(div_len==0) { var str='<div class="osnov_div">'+str+'</div><div class="nov_div"></div>' break; } id++ div_len-- } var anc = doc. createElement ('div'); anc . setAttribute('class',"almost_half_cell") anc.innerHTML =str var DFG= anc. getElementsByTagName ("a") var DFl= anc. getElementsByTagName ("a").length var DFl1= DFl-1 for(;;) { var DFG1= anc. getElementsByTagName ("a")[DFl1] DFG1.setAttribute ('style', 'text-decoration:none;color:#4169e1;font:16px Times New Roman;') DFG1.removeAttribute('href') if(DFl1==0) break; DFl1--; } var anc2= doc. createElement ('A'); anc2. innerHTML = '<a href='+url+' target="_blank" style="text-decoration:none;color:#000099;font:16px Times New Roman;"><span style="color:red;text-decoration:underline;"align="right"> <span style="color:#000099">Оригинал</span></span></a>'; anc.insertBefore(anc2, anc.firstChild) var transcription= anc. getElementsByClassName ("transcription"); for(var i=0;i<transcription.length;i++) { var src_ = transcription[i].src .replace(/file:\/\/\//, ""); var src_= 'http://lingvopro.abbyyonline.com/'+src_ transcription[i].src=src_ } if(label.length==0) { var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. setAttribute('value','+') but. addEventListener ('click', THIS, false); but. setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;margin: 4px 10px 4px 0 !important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;"); html_1.appendChild (but) } fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:310px;width:330px;overflow:auto;cursor:text;'); if(div.length==1) { html_1. appendChild (anc); div[0].style.display= "none" } else { THIS.removeElement(div[1]) div[0].style.display= "none" html_1. appendChild (anc); } } } xmlhttp.send(null); }, sel: function () { var focusEl= document.commandDispatcher.focusedElement if(focusEl) { var tagN=focusEl.tagName if(tagN=='html:input'||tagN=='INPUT'||tagN=='TEXTAREA') { var t = focusEl.value if(!(t.length==0)) { var sell = t.substring(focusEl.selectionStart, focusEl.selectionEnd); if(sell.length==0) { return t; } else { return sell; } } } } var doc = getBrowser (). contentDocument; var t = doc. defaultView. getSelection (); if(t) { return t. toString (); } var t = '' var t = t. toString (); return t }, height_: function (f,sel) { var T_lenght=sel.length var fram=this.fram.height var res=(T_lenght / 38)*28 if(res<240) { res=240 } var rs=window.innerWidth var rs= rs/3 if(res > rs) { res=rs } if(f==1) { return res } }, sv: function (event) { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var size_=this.size_ var el= event. currentTarget; var el_lingvo=el.nextSibling var el_=el.previousSibling if(el_.style.display== "none") { el_.style.display='block' el_lingvo.style.display='none' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+size_+';width:330px;overflow:auto;cursor:text;'); } else { el_lingvo.style.display='block' el_.style.display='none' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:310px;width:330px;overflow:auto;cursor:text;'); } }, handleEvent: function (event) { switch (event. type) { case "mousedown": this. tbOnMouseDown (event); break; case "mousemove": this. tbOnMouseMove (event); break; case "mouseup": this. tbOnMouseUp (event); break; case "click": this. _OnClick (event); break; case "load": this. frameOnLoad (event); break; } }, _OnClick: function (event) { switch (event. currentTarget. getAttribute ('value')) { case ">": this. size (); break; case "write": this. write (); break; case "selec": this. sel_tx (); break; case "repl": this. repl (); break; case "+": this. sv (event); break; case "close": this. clseOnClick (event); break; } }, size: function () { var size_=this.size_ var fram=this.fram if(fram.style.height== "0px") { fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+size_+';width:330px;overflow:auto;cursor:text;'); } else { this.size_=fram.style.height fram. setAttribute('style','height:0px;width:330px;') } }, write: function () { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") var menulist =this.menulist.getAttribute('label'); if(TEXTAREA.length== 1) { TEXTAREA[0]. setAttribute('style',"height:45%;width:100%") var html_ = doc. createElement ('TEXTAREA'); html_. setAttribute('class',"perevod") fram_doc. getElementsByTagName ("div")[0]. appendChild (html_) html_. setAttribute('style',"height:45%;width:100%") } if(TEXTAREA.length== 0) { var html_ = doc. createElement ('TEXTAREA'); html_. setAttribute('class',"original") fram_doc. getElementsByTagName ("div")[0]. appendChild (html_) html_. setAttribute('style',"height:90%;width:100%") return } switch (menulist) { case "Google": this. Google (); break; case "Bing": this. Bing (); break; case "Lingvo": this. Lingvo (); break; } }, sel_tx: function () { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") var menulist =this.menulist.getAttribute('label'); var sel=this.sel() var sel=sel.toString (); var f=1 var H=this.height_(f,sel)+'px' var W=330+'px' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); var sel_=readFromClipboard() if(TEXTAREA.length== 2 && sel.length > 0 ) { this.removeElement(TEXTAREA[1]) TEXTAREA[0]. setAttribute('style',"height:90%;width:100%") } if(sel.length== 0) { if(sel_.length> 0) { TEXTAREA[0].value= sel_ } } if(TEXTAREA.length== 1 && sel.length == 0 ) { TEXTAREA[0]. setAttribute('style',"height:45%;width:100%") var html_ = doc. createElement ('TEXTAREA'); html_. setAttribute('class',"perevod") fram_doc. getElementsByTagName ("div")[0]. appendChild (html_) html_. setAttribute('style',"height:45%;width:100%") } switch (menulist) { case "Google": this. Google (); break; case "Bing": this. Bing (); break; case "Lingvo": this. Lingvo (); break; } }, repl: function () { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") if(TEXTAREA.length== 2) { var sel_=TEXTAREA[1].value var sell = sel_.substring(TEXTAREA[1].selectionStart, TEXTAREA[1].selectionEnd); if(sell.length==0) { var sell=TEXTAREA[1].value } } if(TEXTAREA.length== 1) { var sel_=TEXTAREA[0].value var sell = sel_.substring(TEXTAREA[0].selectionStart, TEXTAREA[0].selectionEnd); if(sell.length==0) { var sell=sel_ } } var range = content.getSelection().getRangeAt(0); var ht=range.cloneContents(); range.deleteContents(); ht.textContent=sell range.insertNode(ht); }, tbOnMouseMove: function (event) { this. toolbar. style. left = this. origX + event. clientX - this. grabX + 'px'; this. toolbar. style. top = this. origY + event. clientY - this. grabY + 'px'; }, tbOnMouseUp: function (event) { this. doc. removeEventListener ('mousemove', this, false); this. toolbar. style. zIndex = 9997; }, tbOnMouseDown: function (event) { if (event. target == this. toolbar) { event. preventDefault (); this. toolbar. style. zIndex = 9998; this. grabX = event. clientX; this. grabY = event. clientY; this. origX = parseInt (this. toolbar. style. left); this. origY = parseInt (this. toolbar. style. top); this. doc. addEventListener ('mousemove', this, false); this. doc. addEventListener ('mouseup', this, false); } }, removeEventListener: function (element, eventType, captureFlag) { try { element. removeEventListener (eventType, this, captureFlag); } catch (err) {} }, removeElement: function (element) { try { element. parentNode. removeChild (element); } catch (err) {} }, clseOnClick: function (event) { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var label = this. toolbar. getElementsByTagName ("label") for(var i=0;i<label.length;i++) { var l=label[i]. getAttribute('value') if(l=='>'||l=='+'||l=='write'||l=='selec'||l=='repl'||l=='close') { label[i].removeEventListener ('click', this, false); } } this. removeEventListener (this. toolbar, 'mousedown', false); this. removeEventListener (this. doc, 'mousemove', false); this. removeEventListener (this. doc, 'mouseup', false); this. removeEventListener (this. fram, 'load', false); this. fram. setAttribute('src','about:blank') this. removeElement (this. fram); this. removeElement (this. toolbar); this. fram = null; this. toolbar = null; this. win = null; this. doc = null; this. menulist = null; this. size_ = null; }, ujs_createWindow: function (event) { var doc = this. doc; var win = this. win; var H=240+'px' var W=330+'px' var toolbar = doc. createElement ('div'); toolbar. setAttribute('class','Mozila_Tr') this. toolbar = toolbar; toolbar. innerHTML = '<div></div>' toolbar. setAttribute('style', 'position:fixed;background:aquamarine;display:block;visibility:hidden;left:0px;top:0;height:avto;width:avto;font:16px Times New Roman;border:1px solid gray;padding:3px;z-index:9997;overflow:visible;cursor:move;background-color:rgba(110,150,179,.59) !important;'); toolbar. addEventListener ('mousedown', this, false); /////////////свернуть/////////////////////////////////////////////////////////////// var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. setAttribute('value','>') but. addEventListener ('click', this, false); but. setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;margin: 4px 10px 4px 0 !important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;"); toolbar.appendChild (but) /////////////////написать//////////////////////////////////////////////// var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. setAttribute('value','write') but. addEventListener ('click', this, false); but. setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;margin: 4px 5px 4px 0 !important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;"); toolbar.appendChild (but) ////////////////вставить из буфера////////////////////////////////////////////////////////// var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. addEventListener ('click', this, false); but. setAttribute('value','selec') but. setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;margin: 4px 5px 4px 0 !important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;"); toolbar. appendChild (but) //////////////////вставить выделеное///////////////////////////////////////////////////////// var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. addEventListener ('click', this, false); but. setAttribute('value','repl') but. setAttribute('style',"-moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;max-height: 22px !important; min-height: 22px !important;margin: 3px 5px 4px 5px !important;cursor:pointer;"); toolbar. appendChild (but) var menulist = <menulist xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="83" height="22"> <menupopup> <menuitem label="Google"/> <menuitem label="Bing"/> <menuitem label="Lingvo"/> </menupopup> </menulist> menulist = custombuttonsUtils. makeXML (menulist); this.menulist=menulist toolbar. appendChild (menulist) menulist. setAttribute('style'," -moz-appearance: none;color: black;background: transparent !important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 0px;border: 0px solid rgba(255,255,99,.49)!important;max-height: 22px !important; min-height: 24px !important;cursor:pointer;margin: 8px 0 0 4px !important;"); var clse = document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); toolbar.appendChild (clse) clse.setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;margin: 1px 1px 1px 65px !important;"); clse. setAttribute('value','close') clse. addEventListener ('click', this, false); var iframe_= doc. createElement ('iframe') iframe_. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); iframe_. addEventListener ('load', this, false); iframe_. setAttribute('src','about:blank') toolbar.firstChild. appendChild (iframe_); doc. documentElement. appendChild (toolbar); var strict = doc. compatMode == 'CSS1Compat'; var mX = (strict? doc. documentElement. clientWidth: doc. body. clientWidth) - toolbar. offsetWidth; toolbar. style. left = mX+"px"; toolbar. style. top = "0px"; toolbar. style. visibility = 'visible'; }, frameOnLoad: function (event) { var doc = this. doc; var fram = event. currentTarget; fram. removeEventListener ('load', this, false); var fram_doc = fram. contentDocument; var html_1 = fram_doc. getElementsByTagName ("body")[0] var html_= doc. createElement ('div'); this.fram=fram var sel=this.sel() var sel=sel. toString (); if(sel.length==0) { var textarea_ = doc. createElement ('textarea'); textarea_. setAttribute('class',"original") html_. appendChild (textarea_) textarea_. setAttribute('style',"height:90%;width:100%") html_1. appendChild (html_) return } else { var f=1 var h_=this.height_(f,sel) h_=h_. toString (); h_=h_.split('.') h_=h_[0] var H =h_+'px' this.size_=H var W =330+'px' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); var textarea_ = doc. createElement ('textarea'); textarea_.value=sel html_. appendChild (textarea_) textarea_. setAttribute('style',"height:90%;width:100%") } html_1. appendChild (html_) this.Google() } }; var translator = new cbTranslatorButton (getBrowser ()); this.translator = translator
Отредактировано Ste_pan (22-02-2012 07:24:44)
Отсутствует
дравствуйте написал кнопку переводчик для себя по мативам Translate page/selected with Google от bunda1
кнопка работает так выдилил текст и не отпуская левую кнопку мыши шечек правой вылетает окошко с переводом
такие же действия без выделения пустое окошко с текстериа для в ввода
удерживая левую и прокрутка колесика заменить текст переводом ...........
Отличная кнопка, но ...
удерживая левую и прокрутка колесика заменить текст переводом
- не работает
Отсутствует
А У меня так вообще ничего не работает
уточню код в инилизацию и работать начинает после обновления страницы
ну в принципе все как всегда у меня работает а у остальных через раз
как вариант можно поставить расширение жесты мыши создать новую схему
var doc = getBrowser (). contentDocument; var Mozila_Tr = doc. getElementsByClassName ("Mozila_Tr") var t = doc. defaultView. getSelection (). toString (); if(Mozila_Tr.length==0) { function cbTranslatorButton (browser) { this. doc = browser. contentDocument; this. win = browser. contentDocument. defaultView; } cbTranslatorButton. prototype = { doc: null, fram: null, win: null, toolbar: null, menulist: null, size_:null, grabX: 0, origX: 0, grabY: 0, origY: 0, Google: function () { var doc=this. doc var THIS=this var sel=THIS.sel() var sel=sel.toString (); var fram=THIS.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") if(TEXTAREA.length== 2) { if(!(TEXTAREA[0].value.length==0)) { var sel=TEXTAREA[0].value var sel=sel. toString (); var pattern = /\r\n|\r|\n/g; sel = escape (convertFromUnicode ("UTF-8", sel)) var sel = sel .replace(pattern, " "); } } var f=1 var H=this.height_(f,sel)+'px' var W=330+'px' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); var url='http://translate.google.ru/?q='+sel+"&hl=ru"+"&langpair=auto|ru&tbb=1" xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var tml_ = doc. createElement ('TEXTAREA'); var html_t = xmlhttp.responseText var div_ = doc. createElement ('div'); div_.innerHTML =html_t var TBODY_= div_.getElementsByClassName ("almost_half_cell")[0] var TBODY_=TBODY_. getElementsByTagName ("span") [0].textContent; if(TEXTAREA.length== 1) { TEXTAREA[0].value= TBODY_ } if(TEXTAREA.length== 2) { TEXTAREA[1].value= TBODY_ } } } xmlhttp.send(null); return 1 }, Bing: function () { var doc=this. doc var THIS=this var sel=THIS.sel(). toString (); var pattern = /\r\n|\r|\n/g; var sel = sel .replace(pattern, " "); var fram=THIS.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") if(TEXTAREA.length== 2) { if(!(TEXTAREA[0].value.length==0)) { var sel=TEXTAREA[0].value var sel=sel. toString (); var pattern = /\r\n|\r|\n/g; var sel = sel .replace(pattern, " "); } } var f=1 var H=this.height_(f,sel)+'px' var W=330+'px' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); sel = escape (convertFromUnicode ("UTF-8", sel)) var url='http://www.microsofttranslator.com' xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var html_t = xmlhttp.responseText var ind1 =html_t.indexOf('Default.Constants.AjaxApiAppId') var st =html_t.slice(ind1+34,html_t.length) var ind2 =st.indexOf('*')+1 var st =st.slice(0,ind2) var url1="http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId="+st+"&text=" var url=url1+sel+'&from=&to=ru&contentType=text/plain&ctr=RussianFederation&ref=IE8Activity&rgp=2560b528' xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { var tml_ = doc. createElement ('TEXTAREA'); var html_t = xmlhttp.responseText var html_t= html_t.replace(/"/g, ""); if(TEXTAREA.length== 1) { TEXTAREA[0].value= html_t } if(TEXTAREA.length== 2) { TEXTAREA[1].value= html_t } } } xmlhttp.send(null); } } xmlhttp.send(null); return 1 }, Lingvo: function () { var THIS=this var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var html_1 = fram_doc. getElementsByTagName ("body")[0] var div = fram_doc. getElementsByTagName ("div") var label = fram_doc. getElementsByTagName ("label") var sel=this.sel() var sel=sel.toString (); var url='http://lingvopro.abbyyonline.com/ru/Search/en-ru/'+sel xmlhttp = new XMLHttpRequest() xmlhttp.open('GET',url, true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return if (xmlhttp.status == 200) { function divv(id,slovar,div_len) { var id2="lupashust"+id var id1="'"+id2+"'" if(div_len===0) { var div1='<div id='+id1+'>' } else { var div1='<div id='+id1+' style="display: none">' } var osnov="if(document.getElementById("+id1+").style.display == 'none'){document.getElementById("+id1+").style.display = 'block';}else{document.getElementById("+id1+").style.display = 'none';}" var spOS='<label style="text-decoration:none;color:#483D8B;font:14px Times New Roman;cursor:pointer;" onclick="Javascript:'+osnov+'">'+slovar+'</label>' var osnov1=spOS+div1 return osnov1 } var html_t = xmlhttp.responseText var temp = doc. createElement ('div'); temp.innerHTML =html_t var div_col= temp. getElementsByClassName ("js-article-html") var length=div_col.length var div_len=div_col.length-1; var id=0 var kon ='</div><br>' var str=new String() for (;;) { var div_res_t= div_col[div_len] var slovar_t= div_res_t. getElementsByTagName ("a")[0] var slovar=slovar_t. textContent var tex_Span='<span style="color:red;text-decoration:underline;"align="right"> <span style="color:black">' div_res_t. getElementsByTagName ("h2")[0].style.display = 'none'; div_res_t. getElementsByTagName ("a")[0].innerHTML=tex_Span+'<h3>'+sel+'</h3>'+'</span></span>' div_res_t. getElementsByTagName ("a")[0].removeAttribute('href') var div_res=div_res_t.innerHTML var s_title=divv(id,slovar,div_len) var str =str+s_title+div_res+kon if(div_len==0) { var str='<div class="osnov_div">'+str+'</div><div class="nov_div"></div>' break; } id++ div_len-- } var anc = doc. createElement ('div'); anc . setAttribute('class',"almost_half_cell") anc.innerHTML =str var DFG= anc. getElementsByTagName ("a") var DFl= anc. getElementsByTagName ("a").length var DFl1= DFl-1 for(;;) { var DFG1= anc. getElementsByTagName ("a")[DFl1] DFG1.setAttribute ('style', 'text-decoration:none;color:#4169e1;font:16px Times New Roman;') DFG1.removeAttribute('href') if(DFl1==0) break; DFl1--; } var anc2= doc. createElement ('A'); anc2. innerHTML = '<a href='+url+' target="_blank" style="text-decoration:none;color:#000099;font:16px Times New Roman;"><span style="color:red;text-decoration:underline;"align="right"> <span style="color:#000099">Оригинал</span></span></a>'; anc.insertBefore(anc2, anc.firstChild) var transcription= anc. getElementsByClassName ("transcription"); for(var i=0;i<transcription.length;i++) { var src_ = transcription[i].src .replace(/file:\/\/\//, ""); var src_= 'http://lingvopro.abbyyonline.com/'+src_ transcription[i].src=src_ } if(label.length==0) { var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. setAttribute('value','+') but. addEventListener ('click', THIS, false); but. setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;margin: 4px 10px 4px 0 !important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;"); html_1.appendChild (but) } fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:310px;width:330px;overflow:auto;cursor:text;'); if(div.length==1) { html_1. appendChild (anc); div[0].style.display= "none" } else { THIS.removeElement(div[1]) div[0].style.display= "none" html_1. appendChild (anc); } } } xmlhttp.send(null); }, sel: function () { var focusEl= document.commandDispatcher.focusedElement if(focusEl) { var tagN=focusEl.tagName if(tagN=='html:input'||tagN=='INPUT'||tagN=='TEXTAREA') { var t = focusEl.value if(!(t.length==0)) { var sell = t.substring(focusEl.selectionStart, focusEl.selectionEnd); if(sell.length==0) { return t; } else { return sell; } } } } var doc = getBrowser (). contentDocument; var t = doc. defaultView. getSelection (); if(t) { return t. toString (); } var t = '' var t = t. toString (); return t }, height_: function (f,sel) { var T_lenght=sel.length var fram=this.fram.height var res=(T_lenght / 38)*28 if(res<240) { res=240 } var rs=window.innerWidth var rs= rs/3 if(res > rs) { res=rs } if(f==1) { return res } }, sv: function (event) { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var size_=this.size_ var el= event. currentTarget; var el_lingvo=el.nextSibling var el_=el.previousSibling if(el_.style.display== "none") { el_.style.display='block' el_lingvo.style.display='none' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+size_+';width:330px;overflow:auto;cursor:text;'); } else { el_lingvo.style.display='block' el_.style.display='none' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:310px;width:330px;overflow:auto;cursor:text;'); } }, handleEvent: function (event) { switch (event. type) { case "mousedown": this. tbOnMouseDown (event); break; case "mousemove": this. tbOnMouseMove (event); break; case "mouseup": this. tbOnMouseUp (event); break; case "click": this. _OnClick (event); break; case "load": this. frameOnLoad (event); break; } }, _OnClick: function (event) { switch (event. currentTarget. getAttribute ('value')) { case ">": this. size (); break; case "write": this. write (); break; case "selec": this. sel_tx (); break; case "repl": this. repl (); break; case "+": this. sv (event); break; case "close": this. clseOnClick (event); break; } }, size: function () { var size_=this.size_ var fram=this.fram if(fram.style.height== "0px") { fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+size_+';width:330px;overflow:auto;cursor:text;'); } else { this.size_=fram.style.height fram. setAttribute('style','height:0px;width:330px;') } }, write: function () { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") var menulist =this.menulist.getAttribute('label'); if(TEXTAREA.length== 1) { TEXTAREA[0]. setAttribute('style',"height:45%;width:100%") var html_ = doc. createElement ('TEXTAREA'); html_. setAttribute('class',"perevod") fram_doc. getElementsByTagName ("div")[0]. appendChild (html_) html_. setAttribute('style',"height:45%;width:100%") } if(TEXTAREA.length== 0) { var html_ = doc. createElement ('TEXTAREA'); html_. setAttribute('class',"original") fram_doc. getElementsByTagName ("div")[0]. appendChild (html_) html_. setAttribute('style',"height:90%;width:100%") return } switch (menulist) { case "Google": this. Google (); break; case "Bing": this. Bing (); break; case "Lingvo": this. Lingvo (); break; } }, sel_tx: function () { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") var menulist =this.menulist.getAttribute('label'); var sel=this.sel() var sel=sel.toString (); var f=1 var H=this.height_(f,sel)+'px' var W=330+'px' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); var sel_=readFromClipboard() if(TEXTAREA.length== 2 && sel.length > 0 ) { this.removeElement(TEXTAREA[1]) TEXTAREA[0]. setAttribute('style',"height:90%;width:100%") } if(sel.length== 0) { if(sel_.length> 0) { TEXTAREA[0].value= sel_ } } if(TEXTAREA.length== 1 && sel.length == 0 ) { TEXTAREA[0]. setAttribute('style',"height:45%;width:100%") var html_ = doc. createElement ('TEXTAREA'); html_. setAttribute('class',"perevod") fram_doc. getElementsByTagName ("div")[0]. appendChild (html_) html_. setAttribute('style',"height:45%;width:100%") } switch (menulist) { case "Google": this. Google (); break; case "Bing": this. Bing (); break; case "Lingvo": this. Lingvo (); break; } }, repl: function () { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var TEXTAREA = fram_doc. getElementsByTagName ("TEXTAREA") if(TEXTAREA.length== 2) { var sel_=TEXTAREA[1].value var sell = sel_.substring(TEXTAREA[1].selectionStart, TEXTAREA[1].selectionEnd); if(sell.length==0) { var sell=TEXTAREA[1].value } } if(TEXTAREA.length== 1) { var sel_=TEXTAREA[0].value var sell = sel_.substring(TEXTAREA[0].selectionStart, TEXTAREA[0].selectionEnd); if(sell.length==0) { var sell=sel_ } } var range = content.getSelection().getRangeAt(0); var ht=range.cloneContents(); range.deleteContents(); ht.textContent=sell range.insertNode(ht); }, tbOnMouseMove: function (event) { this. toolbar. style. left = this. origX + event. clientX - this. grabX + 'px'; this. toolbar. style. top = this. origY + event. clientY - this. grabY + 'px'; }, tbOnMouseUp: function (event) { this. doc. removeEventListener ('mousemove', this, false); this. toolbar. style. zIndex = 9997; }, tbOnMouseDown: function (event) { if (event. target == this. toolbar) { event. preventDefault (); this. toolbar. style. zIndex = 9998; this. grabX = event. clientX; this. grabY = event. clientY; this. origX = parseInt (this. toolbar. style. left); this. origY = parseInt (this. toolbar. style. top); this. doc. addEventListener ('mousemove', this, false); this. doc. addEventListener ('mouseup', this, false); } }, removeEventListener: function (element, eventType, captureFlag) { try { element. removeEventListener (eventType, this, captureFlag); } catch (err) {} }, removeElement: function (element) { try { element. parentNode. removeChild (element); } catch (err) {} }, clseOnClick: function (event) { var doc=this. doc var fram=this.fram var fram_doc = fram. contentDocument; var label = this. toolbar. getElementsByTagName ("label") for(var i=0;i<label.length;i++) { var l=label[i]. getAttribute('value') if(l=='>'||l=='+'||l=='write'||l=='selec'||l=='repl'||l=='close') { label[i].removeEventListener ('click', this, false); } } this. removeEventListener (this. toolbar, 'mousedown', false); this. removeEventListener (this. doc, 'mousemove', false); this. removeEventListener (this. doc, 'mouseup', false); this. removeEventListener (this. fram, 'load', false); this. fram. setAttribute('src','about:blank') this. removeElement (this. fram); this. removeElement (this. toolbar); this. fram = null; this. toolbar = null; this. win = null; this. doc = null; this. menulist = null; this. size_ = null; }, ujs_createWindow: function (event) { var doc = this. doc; var win = this. win; var H=240+'px' var W=330+'px' var toolbar = doc. createElement ('div'); toolbar. setAttribute('class','Mozila_Tr') this. toolbar = toolbar; toolbar. innerHTML = '<div></div>' toolbar. setAttribute('style', 'position:fixed;background:aquamarine;display:block;visibility:hidden;left:0px;top:0;height:avto;width:avto;font:16px Times New Roman;border:1px solid gray;padding:3px;z-index:9997;overflow:visible;cursor:move;background-color:rgba(110,150,179,.59) !important;'); toolbar. addEventListener ('mousedown', this, false); /////////////свернуть/////////////////////////////////////////////////////////////// var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. setAttribute('value','>') but. addEventListener ('click', this, false); but. setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;margin: 4px 10px 4px 0 !important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;"); toolbar.appendChild (but) /////////////////написать//////////////////////////////////////////////// var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. setAttribute('value','write') but. addEventListener ('click', this, false); but. setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;margin: 4px 5px 4px 0 !important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;"); toolbar.appendChild (but) ////////////////вставить из буфера////////////////////////////////////////////////////////// var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. addEventListener ('click', this, false); but. setAttribute('value','selec') but. setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;margin: 4px 5px 4px 0 !important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;"); toolbar. appendChild (but) //////////////////вставить выделеное///////////////////////////////////////////////////////// var but= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); but. addEventListener ('click', this, false); but. setAttribute('value','repl') but. setAttribute('style',"-moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;max-height: 22px !important; min-height: 22px !important;margin: 3px 5px 4px 5px !important;cursor:pointer;"); toolbar. appendChild (but) var menulist = <menulist xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="83" height="22"> <menupopup> <menuitem label="Google"/> <menuitem label="Bing"/> <menuitem label="Lingvo"/> </menupopup> </menulist> menulist = custombuttonsUtils. makeXML (menulist); this.menulist=menulist toolbar. appendChild (menulist) menulist. setAttribute('style'," -moz-appearance: none;color: black;background: transparent !important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 0px;border: 0px solid rgba(255,255,99,.49)!important;max-height: 22px !important; min-height: 24px !important;cursor:pointer;margin: 8px 0 0 4px !important;"); var clse = document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "label"); toolbar.appendChild (clse) clse.setAttribute('style'," -moz-appearance: none;color: black;background:rgba(158,204,250,.39)!important;-moz-border-radius: 2.5px !important;background-clip: padding-box;border-radius: 3px;border: 2px solid rgba(255,255,99,.49)!important;max-height: 22px !important; min-height: 22px !important;cursor:pointer;margin: 1px 1px 1px 65px !important;"); clse. setAttribute('value','close') clse. addEventListener ('click', this, false); var iframe_= doc. createElement ('iframe') iframe_. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); iframe_. addEventListener ('load', this, false); iframe_. setAttribute('src','about:blank') toolbar.firstChild. appendChild (iframe_); doc. documentElement. appendChild (toolbar); var strict = doc. compatMode == 'CSS1Compat'; var mX = (strict? doc. documentElement. clientWidth: doc. body. clientWidth) - toolbar. offsetWidth; toolbar. style. left = mX+"px"; toolbar. style. top = "0px"; toolbar. style. visibility = 'visible'; }, frameOnLoad: function (event) { var doc = this. doc; var fram = event. currentTarget; fram. removeEventListener ('load', this, false); var fram_doc = fram. contentDocument; var html_1 = fram_doc. getElementsByTagName ("body")[0] var html_= doc. createElement ('div'); this.fram=fram var sel=this.sel() var sel=sel. toString (); if(sel.length==0) { var textarea_ = doc. createElement ('textarea'); textarea_. setAttribute('class',"original") html_. appendChild (textarea_) textarea_. setAttribute('style',"height:90%;width:100%") html_1. appendChild (html_) return } else { var f=1 var h_=this.height_(f,sel) h_=h_. toString (); h_=h_.split('.') h_=h_[0] var H =h_+'px' this.size_=H var W =330+'px' fram. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:'+H+';width:'+W+';overflow:auto;cursor:text;'); var textarea_ = doc. createElement ('textarea'); textarea_.value=sel html_. appendChild (textarea_) textarea_. setAttribute('style',"height:90%;width:100%") } html_1. appendChild (html_) this.Google() } }; var translator = new cbTranslatorButton (getBrowser ()); var ct = getBrowser (). selectedTab; ct. translator = translator; ct.translator. ujs_createWindow (event); } else { var ct = getBrowser (). selectedTab; ct. translator. sel_tx (); }
Отредактировано Ste_pan (23-02-2012 12:24:21)
Отсутствует
еще пару слов про эту кнопку: на окошке с переводом кнопки
1-вая '<' свернуть в полоску
2-"write" при щелчке по ней переводится текст из текстериа ,если текстериа одно то внизу прилепляется второе с переводом .
"selec" переводит выделеный текст из страницы или из елемента находящегося в фокусе например из того-же "текстериа " если в активном элементе есть выделение то переведет тока его.перевод выводится одном текстериа второе если есть удаляется .если нет выделеного, текст берется из буфера обмена
'repl'-заменить выделеное на странице переводом перевод берется из текстериа если в нем есть выделеное то берется тока оно .
если в выподющем списке выброно лингво то превыдущий перевод не удаляется совсем а сворачивается и появляется кнопка "+" при щечке по которой цыклично показывается, текстериа либо перевод от лингво
вообще планирую использовать для перевода страниц с доками и последущего сохранения в scrapBooke
Отредактировано Ste_pan (24-02-2012 07:30:27)
Отсутствует
По поводу кнопки Session Bookmarks, сложно ли сделать, чтобы закладки добавлялись не в конец (низ), а начало (верх)?
Перетаскивание в нужную позицию совсем не нравится?
И 0.2.0pre23 - 2011-07-31 это последняя версия кнопки?
Да, была последняя:
sessionBookmarks.js 0.1.0pre3 - 2011-06-29
sessionBookmarks-experimental.js 0.2.0pre23 - 2011-07-31
Добавлено 24-02-2012 15:21:29
Session Bookmarks 0.2.0pre24 - 2012-02-24
[+] Добавлена настройка «addToEnd: true», если выставить в false, то закладки будут добавляться в начало, а не в конец.
Отредактировано Infocatcher (24-02-2012 15:22:37)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует