Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№367618-02-2012 06:07:31

LBra
Участник
 
Группа: Members
Зарегистрирован: 20-10-2011
Сообщений: 40
UA: Firefox 4.0

Re: Custom Buttons

Andrey_Krropotkin пишет

Выдернул из расширения Mar Mod перевод с заменой текста. Воткнул в контекстное меню для выделенного текста и добавил еще несколько пунктов:

okkamas_knife пишет

Context translate(Firefox)
Добавляет пункты в контекстное меню
при выделенном тексте предлагает различные способы перевода выделенного
(как разными переводчиками так и с разным способом вывода)
при отсутствии выделения предлагает перевести страницу различными переводчиками как в текущей так и в новой вкладке.


Andrey_Krropotkin

okkamas_knife
Спасибо за прекрасную кнопку.
Но не все работает так, как бы хотелось.
1. Не во всех вариантах перевода задействован автовыбор языка исходного текста так как жестко забит исходный английский
2. Нельзя перевести кирилличные тексты и слова, отображаются крокозябры.
Можно ли это все добавить - автовыбор языка исходного текста во всех вариантах и возможность перевода кириллицы - тоже во всех вариантах контекстного меню?.. Плиз. :)

Отсутствует

 

№367718-02-2012 07:57:44

Ste_pan
Участник
 
Группа: Members
Откуда: приморский край п.сибирцево
Зарегистрирован: 13-02-2011
Сообщений: 63
UA: Firefox 7.0

Re: Custom Buttons

щас должно работать по идее. кнопка переводит текст с заменой 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)    
    }
}


отдельное спасибо bnda1
хотел перевод спереть а надо было просить правельно

Отредактировано Ste_pan (18-02-2012 08:02:43)

Отсутствует

 

№367818-02-2012 09:03:19

LBra
Участник
 
Группа: Members
Зарегистрирован: 20-10-2011
Сообщений: 40
UA: Firefox 4.0

Re: Custom Buttons

Ste_pan
Я вообще-то о другой кнопке говорил  :

LBra пишет
okkamas_knife пишет

Проблем с Гуглом нет, есть проблемы с Яндексом, Промтом, Лингво и Мейл.ру, а также с переводом кириллицы Bing-ом
... нужен код, определяющий язык текста страницы, в виде  en, de, ru, fr и т.д.

Отредактировано LBra (18-02-2012 09:23:20)

Отсутствует

 

№367918-02-2012 10:56:15

Black_Monk
Участник
 
Группа: Members
Зарегистрирован: 18-02-2012
Сообщений: 124
UA: Firefox 10.0

Re: Custom Buttons

Спецы, подскажите по такому вопросу. Хочу продублировать родную мозилловскую кнопку На пред. страницу - На след. страницу на нижнюю панель. Как это сделать-то? Если через добавление новой кнопки, то какой код добавлять? Или может кто готовую сварганит? ;)

Отсутствует

 

№368018-02-2012 12:25:03

adidharma
 
 
Группа: Members
Зарегистрирован: 15-08-2011
Сообщений: 754
UA: Nightly 13.0

Re: Custom Buttons

Black_Monk пишет

Или может кто готовую сварганит?

Вот здесь вроде готовые: Firefox navigation buttons | custombuttons


pcxFirefox - лучшая сборка Лисы!

Отсутствует

 

№368118-02-2012 13:55:25

leex
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 262
UA: Firefox 10.0

Re: Custom Buttons

Black_Monk пишет

Спецы, подскажите по такому вопросу. Хочу продублировать родную мозилловскую кнопку На пред. страницу - На след. страницу на нижнюю панель. Как это сделать-то? Если через добавление новой кнопки, то какой код добавлять? Или может кто готовую сварганит?

Кстати, тоже интересно как скопировать кнопку из расширения (например, встроенный  переводчик из гугл тулбара)
и назначить этот код на новую кнопку в Custom Buttons?

Отредактировано leex (18-02-2012 14:02:47)

Отсутствует

 

№368218-02-2012 16:06:45

SendInfo
.
 
Группа: Members
Зарегистрирован: 14-02-2011
Сообщений: 271
UA: unknown 0.0

Re: Custom Buttons

Ste_pan пишет

страно у меня все работает ид я получаю динамически каждый раз при запросе переводаа не работает вообще или лабуду пишет вместо перевода?если лабуду то какую?

Разобрался: Bing из этой кнопки у меня не переводит из-за HTTPS Everywhere, которое заставляет обращаться к серверу по SSL

Консоль ошибок
api.microsofttranslator.com : server does not support RFC 5746, see CVE-2009-3555

, но Google из этой кнопки работает. И вот такое
обращение

Выделить код

Код:

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())));


к Bing принудительно по https работает, хотя пишет в консоли ту же ошибку.

Отсутствует

 

№368319-02-2012 00:47:31

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 421
UA: Firefox 10.0

Re: Custom Buttons

Подправил кнопку 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">&nbsp;' + 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))?
                        '&nbsp;-&nbsp;' + 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");


bunda1 проверь пожалуйста код и работу

Отредактировано Andrey_Krropotkin (19-02-2012 15:39:40)

Отсутствует

 

№368419-02-2012 01:37:15

1fesFFFF
Участник
 
Группа: Members
Зарегистрирован: 22-01-2010
Сообщений: 231
UA: Firefox 4.0

Re: Custom Buttons

Pony_Smile_Pack пишет

конечно, ссылок-то нету

Добавлено Вчера 03:36:47
сначала их надо извлечь

Ну так прочитайте мои требования к кнопке, потому что то, что вы предлагаете, в корне не подходит для меня.

Так кто может написать кнопочку для извлечения ссылок из исходного кода страниц?

Отредактировано 1fesFFFF (19-02-2012 01:37:48)

Отсутствует

 

№368519-02-2012 12:07:51

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Custom Buttons

Andrey_Krropotkin пишет

Подправил кнопку Translate page/selected with Google от bunda1 в связи с новым скриптом google-translate.js
Автор в связи нововведениями Google использовал перенаправление через http://sitegetter.net:
bunda1 проверь пожалуйста код и работу

Ты просто супер, код отлично работает.
Я исправил кнопку Translate page/selected with Google

Отсутствует

 

№368619-02-2012 15:22:04

klaus65
Участник
 
Группа: Members
Зарегистрирован: 19-02-2012
Сообщений: 50
UA: Firefox 10.0

Re: Custom Buttons

bunda1 пишет

исправил кнопку

Спасибо, отлично работает. :)
P.S. Поменяйте пожалуйста заголовки Код и Инициализация местами. Они у вас перепутаны

Отсутствует

 

№368719-02-2012 15:27:56

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Custom Buttons

klaus65 пишет

Спасибо, отлично работает. :)
P.S. Поменяйте пожалуйста заголовки Код и Инициализация местами. Они у вас перепутаны

Спасибо, я исправил.

Отсутствует

 

№368821-02-2012 18:13:34

dennius
Участник
 
Группа: Members
Зарегистрирован: 29-09-2010
Сообщений: 36
UA: Nightly 13.0

Re: Custom Buttons

okkamas_knife
под спойлером картинка с проблемой на ГисМетео кнопкой. Проверял на чистых профилях на FX3.6 portable, FX10, UX13.0a1

скрытый текст
h_1329832808_8396436_588babaa46.jpeg

как бы избавиться от &minus;  </td>, излишних пробелов
и заодно шрифт жирным сделать

Отсутствует

 

№368921-02-2012 21:22:10

bugmenot
Участник
 
Группа: Members
Зарегистрирован: 29-01-2012
Сообщений: 34
UA: Firefox 10.0

Re: Custom Buttons

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(/&minus;/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(/&deg;<\/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(/&minus;/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(/&deg;<\/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(/&minus;/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();
    }
    
};

Отсутствует

 

№369022-02-2012 05:28:51

Ste_pan
Участник
 
Группа: Members
Откуда: приморский край п.сибирцево
Зарегистрирован: 13-02-2011
Сообщений: 63
UA: Firefox 7.0

Re: Custom Buttons

дравствуйте написал кнопку переводчик для себя по мативам 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)

Отсутствует

 

№369122-02-2012 20:06:23

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Custom Buttons

Ste_pan пишет

дравствуйте написал кнопку переводчик для себя по мативам Translate page/selected with Google от bunda1
кнопка работает так выдилил текст и не отпуская левую кнопку мыши шечек правой вылетает окошко с переводом
такие же действия без выделения пустое окошко с текстериа для в ввода
удерживая левую и прокрутка колесика заменить текст переводом ...........

Отличная кнопка, но ...

удерживая левую и прокрутка колесика заменить текст переводом

- не работает

Отсутствует

 

№369223-02-2012 03:20:13

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 619
UA: Firefox 10.0

Re: Custom Buttons

bunda1
А У меня так вообще ничего не работает :angry:

Отсутствует

 

№369323-02-2012 12:08:20

Ste_pan
Участник
 
Группа: Members
Откуда: приморский край п.сибирцево
Зарегистрирован: 13-02-2011
Сообщений: 63
UA: Firefox 7.0

Re: Custom Buttons

vv07 пишет

А У меня так вообще ничего не работает

уточню код в инилизацию и работать начинает после обновления страницы

ну в принципе все как всегда у меня работает а у остальных через раз :/
как вариант можно поставить расширение жесты мыши создать новую схему   

скрытый текст

Выделить код

Код:

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)

Отсутствует

 

№369423-02-2012 12:23:33

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 13.0

Re: Custom Buttons

Ste_pan пишет

жесты мыши создать новую схему

FireGestures cообщает, что жест выполнен с ошибкой.

Отсутствует

 

№369523-02-2012 12:25:33

Ste_pan
Участник
 
Группа: Members
Откуда: приморский край п.сибирцево
Зарегистрирован: 13-02-2011
Сообщений: 63
UA: Firefox 7.0

Re: Custom Buttons

ну затупил малясь

Отсутствует

 

№369623-02-2012 13:03:00

dennius
Участник
 
Группа: Members
Зарегистрирован: 29-09-2010
Сообщений: 36
UA: Nightly 13.0

Re: Custom Buttons

bugmenot пишет

Надо заменить код кнопки

Спасибо, теперь работает как надо поп-ап при наведении на кнопку. Саму кнопку видно только в [firefox] 3.6, в [nightly] и [firefox] 10 - пустое поле

Отсутствует

 

№369723-02-2012 16:30:51

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 619
UA: Firefox 10.0

Re: Custom Buttons

уточню код в инилизацию и работать начинает после обновления страницы

Зашуршало :)

Отсутствует

 

№369824-02-2012 07:20:27

Ste_pan
Участник
 
Группа: Members
Откуда: приморский край п.сибирцево
Зарегистрирован: 13-02-2011
Сообщений: 63
UA: Firefox 7.0

Re: Custom Buttons

еще пару слов про эту кнопку: на окошке с переводом кнопки
1-вая '<' свернуть в полоску
2-"write" при щелчке по ней переводится текст из текстериа ,если текстериа одно то внизу прилепляется второе с переводом .
"selec" переводит выделеный текст из страницы или из елемента находящегося в фокусе например из того-же "текстериа " если в активном элементе есть выделение то переведет тока его.перевод  выводится одном текстериа второе если есть удаляется .если нет выделеного, текст берется из буфера обмена
'repl'-заменить выделеное на странице переводом перевод берется из текстериа если в нем есть выделеное то берется тока оно .
если в выподющем списке выброно лингво то превыдущий перевод не удаляется совсем а сворачивается и появляется кнопка "+" при щечке по которой цыклично показывается, текстериа либо перевод от лингво
вообще планирую использовать для перевода страниц с доками и последущего сохранения в scrapBooke

Отредактировано Ste_pan (24-02-2012 07:30:27)

Отсутствует

 

№369924-02-2012 13:32:08

vom
Участник
 
Группа: Members
Зарегистрирован: 30-08-2011
Сообщений: 155
UA: Nightly 13.0

Re: Custom Buttons

Infocatcher
По поводу кнопки Session Bookmarks, сложно ли сделать, чтобы закладки добавлялись не в конец (низ), а начало (верх)? И 0.2.0pre23 - 2011-07-31 это последняя версия кнопки?

Отсутствует

 

№370024-02-2012 15:05:59

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4321
UA: Firefox 10.0

Re: Custom Buttons

vom пишет

По поводу кнопки Session Bookmarks, сложно ли сделать, чтобы закладки добавлялись не в конец (низ), а начало (верх)?

Перетаскивание в нужную позицию совсем не нравится? :)

vom пишет

И 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)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia
Язык отображения форума: [Русский] [English]