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

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№595119-02-2013 15:11:58

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

Re: Custom Buttons

okkamas_knife пишет:

кто поможет написать подобное с POST запросами?

Какие-то сложности с заменой "GET" на "POST"?
И еще рекомендуется обрабатывать сразу onload, это быстрее:

Выделить код

Код:

var xhr = new XMLHttpRequest();
xhr.onload = function() {
    alert(xhr.responseText);
};
xhr.onerror = function() {
    alert("Error!");
};
xhr.open("GET", "http://ya.ru/", true);
xhr.send(null);

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

Отсутствует

 

№595219-02-2013 15:47:10

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: unknown 0.0

Re: Custom Buttons

2k1dmg
или мой вариант
В Вашем варианте не получается настроить постоянное местонахождение окна поисковиков, как было в другой кнопке, замена кода не помогает, окно поисковиков появляется в разных местах, будем ждать. Спасибо. А может подскажите как сделать как на картинке ниже.

скрытый текст
http://i023.radikal.ru/1302/b7/10100800e346.jpg

Отредактировано villa7 (19-02-2013 20:16:52)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№595319-02-2013 22:10:33

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

Re: Custom Buttons

Dumby пишет:

А то кнопка и так безжалостно набивает mainPopupSet дубликатами своего menupopup,

Как же так, а по конкретней можно. menupopup что тоже дублируетса ?

Отсутствует

 

№595419-02-2013 23:54:17

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

Re: Custom Buttons

bunda1 У меня вот такой вопрос - раньше при старом меню был такой код при наведении мышкой на кнопку - меню раскрывалось:

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

Выделить код

Код:

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

this.timer = 0;

// заставляет открыть меню при наведении
this. onmouseover = function (event)
{
    this. open = true;
    clearTimeout(this.timer);
};

// закрывает меню при уведении мыши с кнопки
this. onmouseout = function (event)
{
    if(!event.relatedTarget || Array.indexOf(this.getElementsByTagName("*"), event.relatedTarget) == -1) {
        clearTimeout(this.timer);
        var _this = this;
        this.timer = setTimeout(function() {
            _this.open = false;
        }, 200);
    }
};


Какой код нужно применить, при новом меню?
Я имею ввиду var array = [
       { label:  и т.д.

На форуме

 

№595520-02-2013 00:26:06

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

Re: Custom Buttons

Andrey_Krropotkin пишет:

bunda1 У меня вот такой вопрос - раньше при старом меню был такой код при наведении мышкой на кнопку - меню раскрывалось:

Оно не старое и прекрасно работает на FF19 но для Nightly уже требует конвертации Конвертирование старых кнопок с XML (E4X)
Просто мне больше нравится  с array = [  { label: :)

А что бы при наведении мышкой на кнопку меню раскрывалось:

Выделить код

Код:

this.onmouseover = function() {
     menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");
};

Есть и другие варианты такого меню с тем же:

Выделить код

Код:

this.onmouseover = function() {
       this.open = true;
};

Отсутствует

 

№595620-02-2013 12:38:41

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

Re: Custom Buttons

okkamas_knife пишет:

ну вот поясни как этим пользоваться?

А что это я должен документацию за кого-то читать? :D

Не уверен, что получившаяся функция будет удобна для использования.
И возможны варианты...

Суть примерно такая:

Выделить код

Код:

var fd = new FormData();
fd.append("file", new File("z:\\file.png"));
fd.append("user_id", 17449);
fd.append("user_name", "Infocatcher");
fd.append("act", "Upload");
fd.append("", "Загрузить");

var xhr = new XMLHttpRequest();
xhr.onload = function() {
    alert(xhr.responseText);
};
xhr.onerror = function() {
    alert("Error!");
};
xhr.open("POST", "https://forum.mozilla-russia.org/uploads.php", true);
xhr.send(fd);

А вот особого смысла в функции как-то не видать:

Выделить код

Код:

var fp = Components.classes["@mozilla.org/filepicker;1"]
    .createInstance(Components.interfaces.nsIFilePicker);
fp.init(window, "Select file…", fp.modeOpen);
fp.appendFilter("Allowed files", "*.txt; *.gif; *.jpg; *.jpeg; *.png; *.xpi");
fp.open({
    done: function(ret) {
        if(ret != fp.returnOK)
            return;
        post(
            "https://forum.mozilla-russia.org/uploads.php",
            {
                file: new File(fp.file.path),
                user_id: 17449,
                user_name: "Infocatcher",
                act: "Upload",
                "": "Загрузить"
            },
            function(xhr, ok) {
                alert("Ok: " + ok);
            }
        );
    }
});
function post(url, params, callback) {
    var fd = new FormData();
    for(var name in params) if(params.hasOwnProperty(name))
        fd.append(name, params[name]);
    var xhr = new XMLHttpRequest();
    xhr.onload = function() {
        callback(xhr, true);
    };
    xhr.onerror = function() {
        callback(xhr, false);
    };
    xhr.open("POST", url, true);
    xhr.send(fd);
}

Добавлено 20-02-2013 12:45:19
Все это, в принципе, не так уж сложно найти:
https://developer.mozilla.org/en-US/doc … ta_objects
=> https://developer.mozilla.org/en-US/doc … ta_Objects

С файлами, правда, сложнее.
Там в примере только

Выделить код

Код:

oMyForm.append("userfile", fileInputElement.files[0]);

То есть файл берется из <input type="file" />, которого у нас нет.
Но можно посмотреть на

Выделить код

Код:

input.files; // "[object FileList]"
input.files[0]; // "[object File]"

И найти https://developer.mozilla.org/en-US/docs/DOM/File
=> https://developer.mozilla.org/en-US/doc … hrome_code
Разве что там просто File(), а не new File(). Хотя как-то не логично – с заглавной обычно как раз функции-конструкторы.

Отредактировано Infocatcher (20-02-2013 12:47:06)


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

Отсутствует

 

№595721-02-2013 16:27:45

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 980
UA: Firefox 10.0

Re: Custom Buttons

bunda1 пишет:

Как же так, а по конкретней можно. menupopup что тоже дублируетса ?

Ну, я ничего полохого сказать не хотел :blush:,
просто иногда на меня находит... , не обращай внимания :)

конкретней
Допустим, добавляем menupopup какой-нибудь id ( только для наглядности )

Выделить код

Код:

// Создать меню ..........................................................................................
/* var menuPopup = document.getElementById("mainPopupSet").appendChild(document.createElement("menupopup")); */

var menuPopup = document.createElement("menupopup");
menuPopup.id = "MENUPOPUP Autocopy+3";
document.getElementById("mainPopupSet").appendChild(menuPopup);

Рестарт, и три раза подряд «Настроить...» > «Готово» ( или «Редактировать...» > «ОК» ).
Теперь открываем в DOM Инспекторе mainPopupSet,
проматываем вниз, а там - вот они:

http://storage4.static.itmages.com/i/13/0221/h_1361449558_3296586_b5feb24947.png

Кстати, поскольку скриншот именно после «Настроить...» > «Готово»,
те menupopup, которые между ними - это такие-же дубликаты, но только от кнопки Save+ :)

Отредактировано Dumby (21-02-2013 16:37:00)

Отсутствует

 

№595821-02-2013 21:02:49

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

Re: Custom Buttons

Dumby
Вот спасибо  :), я то даже не думал что меню тоже может так дублироваться. Но вроде мне удалось справиться с этой проблемой и дублированием Application.prefs.get("Autocopy").events.addListener....
Autocopy+3

Но теперь о другом, вот тут я сделал код который как бы перезагружает userContent.css и userChrome.css:

Выделить код

Код:

function read( cssFile ) {
   var dirService = Components.classes['@mozilla.org/file/directory_service;1'].getService(Components.interfaces.nsIProperties);
   var sheetFile = dirService.get('UChrm', Components.interfaces.nsILocalFile);
   sheetFile.append( cssFile );
   if ( sheetFile.exists() == false ) custombuttons.alertSlide( cssFile, "Файл не существует");

   var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
   is.init( sheetFile, 0x01, 00004, null );
   var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
   sis.init( is );       
   var text = sis.read( sis.available() );
   return text.replace(//g, ""); 
}


var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);

["userContent.css", "userChrome.css"].forEach(function( cssFile ) {     
    var cssURI = makeURI("data:text/css," + encodeURIComponent( read( cssFile ) ));
    sss.loadAndRegisterSheet( cssURI, sss.USER_SHEET );
});

Но есть две проблемы. Не могу удалить старые стили при повторным запуске кода. Объясню на примере, я изменил userChrome.css нажал кнопку увидел изменения в интерфейсе и мне они не понравились. Я удалил этот стиль из userChrome.css и добавил новый стиль, нажал кнопку и увидел новые изменения, но и старый стиль тоже. Он не удалился и я не знаю как правильно в коде пристроить:

Выделить код

Код:

if ( sss.sheetRegistered(cssURI, sss.USER_SHEET) ) sss.unregisterSheet(cssURI, sss.USER_SHEET);

Вот ещё, мой код как то неправильно меняет русской текст( кириллицу ) в стилях и вот такой стиль уже не работает:

Выделить код

Код:

.bookmark-item[container="true"][label="Новая папка"] {
list-style-image: url( 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAdHR0AHR0dAB0dHQkdHR0YHR0dGB0dHRgdHR0YHR0dGB0dHRgdHR0YHR0dGB0dHRgdHR4ZHR0eGB0dHQcdHR0AHR0dAB0dHQAhNyQ2MKU8zC24NOkrrC3lKqcn5yunJ+ctrCvnLrAw5zG0NOczuDfnNb085zi/P+U5yEPqPqJJviApIigdHR0AHR0dCjCuPtAj7Cv/INcl/CHdJ/8h3Sj/Id4o/yHdKP8g3Cb/INwm/yDcJf8g2iX/INsl/x3UIPsr8jf/O5hGtB0dHQYeKCAhKLsz8h3CIf4fwCj8HsAm/R7AJv0ewCb9HsAm/R/AJv0fwCb9H8Am/R/BJv0fwSb9IL8p+x3HIP83tELbHR0dDh0jHSEkpiryHbwl/x21Jf4dtyX/Hbcl/x23Jf8dtyX/Hbcl/x23Jf8dtyX/Hbcl/x23Jf8dtCX9Hb4k/zOmQNodHR0OHSIdISGaJPQdriT/Hack/h2pJP8dqST/Hakk/x2pJP8dqST/Hakk/x2pJP8dqST/Hakk/x2nJP0dsCL/MJ483B0dHQ4dJB0hJJgn9B2mI/8doSP+HaIj/x2iI/8doiP/HaIj/x2iI/8doiP/HaIj/x2iI/8doiP/HaAj/R2oIv8wmDncHR0dDh0mHSErmiv0H6Aj/yGdJP4hniT/IZ4k/yGeJP8hniT/IZ4k/yGeJP8hniT/IZ4k/yGeJP8hnCT9H6Qj/zOTN9wdHR0OHigdITCZLvQlmSP/J5kl/ieZJf8nmSX/J5kl/yeZJf8nmSX/J5kl/yeZJf8nmSX/J5kl/yeXJf0mnyT/M44z3B0dHQ4fKR8hN5s19CmVIv8qlCX+K5Ql/yuUJf8rlCX/K5Ql/yuUJf8rlCX/K5Ql/yuUJf8rlCX/K5Il/SqaJP80iTHcHR0dDiAsISE6mjb0Mo8m/zaRK/41kSr/NZEq/zWRKv81kSr/NZEq/zSRKv80kSr/NJEq/zSRKf80jyn9NZYp/zWDL9wdHR0OIS4kIUOhQfQnhx3/KIkd/iiJHf8oiR3/KIkd/ymJHf8piR3/KYkd/ymJHf8piR3/KYkd/ymHHf0rkB7/M38q3B0dHQ4eLSEhdsR582y1Y/9Zq1L+XKxV/1usVP9aq1L/WatS/1mqUf9XqlD/V6lQ/1apT/9Wqk7/UqVL/V+1WP9LjUXaHR0dDx0vHyGY3J/yr9qq/qHYof2i16H+oNaf/p7Vnf6c1Jv+mtKZ/pjRl/6W0JX+lc+U/pTPkv6OyYv7n9ue/2OdXNsdHR0OHR4dCojQk9Ph8uL/0/LS/NTy1P/S8tL/0PLR/9Dy0P/O8s7/zPLM/8vyy//J8sr/x/LI/8jvyfvF8sX/THtDsh0dHQYdHR0AKkQtOYrKktCp4LDsotqp6KHYp+qf1aPqndOg6pvPnOqYzJjqlsmW6pTGkuqQwo7oksWO7VyMVb4dIh0kHR0dAB0dHQAdHR0AHR0dCR0hHRUdHx0WHR8dFh0dHRYdHR0WHR0dFh0dHRYdHR0WHR0dFh0dHRcdHR0VHR0dBx0dHQAdHR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') !important;
-moz-image-region: rect(0px 16px 16px 0px) !important;
}

Мой код превращает этот стиль в это:

Выделить код

Код:

.bookmark-item[container="true"][label="Новая папка"] {......

Добавлено 21-02-2013 21:04:45
Может если есть у тебя время посмотри что можно с этим сделать :blush:

Отредактировано bunda1 (21-02-2013 21:18:54)

Отсутствует

 

№595921-02-2013 21:39:10

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

Re: Custom Buttons

bunda1
unregisterSheet(), к сожалению, не будет работать для настоящего userChrome.css, так что от самого первого стиля избавиться не удастся.

По поводу кириллицы – надо конвертировать из UTF-8 во внутреннее представление чем-нибудь вроде nsIScriptableUnicodeConverter.
Вот тут в спойлере есть пример синхронного чтения.
Но вообще рекомендуется что-то вроде вот такого, через resource://gre/modules/NetUtil.jsm – NetUtil.asyncFetch().
Там можно много чего выбросить, если не нужна поддержка старых версий. :)

Добавлено 21-02-2013 21:40:20
Так что тут проще той же кнопкой подключать в инициализации другой файл – тогда его можно будет выгрузить через unregisterSheet().

Добавлено 21-02-2013 21:42:54
Более того, когда уже есть файл, не нужно читать его содержимое и пропускать через encodeURIComponent() – можно получить file:// ссылку и подключить сразу ее.

Отредактировано Infocatcher (21-02-2013 21:44:45)


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

Отсутствует

 

№596021-02-2013 22:36:06

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

Re: Custom Buttons

Infocatcher
Спасибо, ну тогда вопросы насчет удаления и конвертации стиля отпадает для Сегодня 20:02:49. Ведь если подключить сразу файл то и конвертировать ненадо и так все работает.

Отредактировано bunda1 (21-02-2013 22:37:11)

Отсутствует

 

№596121-02-2013 23:16:12

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

Re: Custom Buttons

bunda1
Разве что могут быть проблемы с кэшированием.
Тогда можно делать ".../userChrome.css?" + Date.now() , например.


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

Отсутствует

 

№596221-02-2013 23:25:18

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

Re: Custom Buttons

okkamas_knife пишет:

bunda1
кстати отличный способ для экспериментов чтоб всегда можно было вернуться к исходному состоянию.
тогда добавить в интерфейс пункт или кнопку "Добавить все изменения в юзерхром" и содержимое того файла с комментарием  типа
/*----добавлено: дата время----*/
код
/*-------------------------------*/
добавляется в конец юзерхрома.

Спасибо за советы. Но мне так добавлять все изменения в юзерхром не кажется хорошей идей, так будет беспорядок. У меня там все по полочкам разложено. Кнопку для экспериментов с Css я позже сделаю, это просто. Ну скажем кнопка будет запускать выделенный Css или из буфера и запоминать если нужно. Правда про настройки надо крепко подумать. Кстати можно Css напрямую в кнопке записывать, не знаю только будет ли это работать:

Выделить код

Код:

var link = custombuttons.makeButtonLink("edit", this.id);
var param = custombuttons.cbService.getButtonParameters(link);
param = param.wrappedJSObject || param;
param.help = "#sidebar-search-container{ display: none !important;}";
custombuttons.cbService.installButton(param);

var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
var cssURI = makeURI("data:text/css," + encodeURIComponent( this.help));
sss.loadAndRegisterSheet( cssURI, sss.USER_SHEET );

Добавлено 21-02-2013 23:28:28

Infocatcher пишет:

bunda1
Разве что могут быть проблемы с кэшированием.
Тогда можно делать ".../userChrome.css?" + Date.now() , например.

Я не понял, а поконкретней можно ? :blush:

Отредактировано bunda1 (21-02-2013 23:28:28)

Отсутствует

 

№596321-02-2013 23:47:34

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

Re: Custom Buttons

bunda1 пишет:

Я не понял, а поконкретней можно ? :blush:

Сначала проверить надо, может, и не кэширует. :)
А так это простой способ заставить приложение перечитать файл по ссылке.

Ну, как-то так:

Выделить код

Код:

var userChrome = Components.classes["@mozilla.org/file/directory_service;1"]
    .getService(Components.interfaces.nsIProperties)
    .get("UChrm", Components.interfaces.nsIFile);
userChrome.append("userChrome.css");
var userChromeURI = Components.classes["@mozilla.org/network/io-service;1"]
    .getService(Components.interfaces.nsIIOService)
    .newFileURI(userChrome);

sss.loadAndRegisterSheet(userChromeURI.spec + "?" + Date.now(), sss.USER_SHEET);

Только для unregisterSheet() нужно будет хранить эту ссылку.


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

Отсутствует

 

№596422-02-2013 13:39:17

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 22.0

Re: Custom Buttons

bunda1 пишет:

voqabuhe пишет:

bunda1
Как с этой проблемой №6589?

Я работаю над этой проблемой.

Странно, а на английской версии [nightly] 22.0а1 эта проблема исчезла.

Отредактировано voqabuhe (22-02-2013 13:40:03)

Отсутствует

 

№596522-02-2013 14:50:32

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 980
UA: Firefox 10.0

Re: Custom Buttons

okkamas_knife

Допиши var url = 'data:text/html;charset=utf-8,<html><body><textarea... ,
а то консоль надоест со своим «HTML-документ не содержит объявления кодировки символов...»

Отсутствует

 

№596622-02-2013 16:13:49

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

Re: Custom Buttons

Всем привет!
получилось заставить "кнопку затемнения" затемнять на всех сайтах, а видео "не трогать"
?

Отсутствует

 

№596722-02-2013 19:10:35

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

Re: Custom Buttons

firepox пишет:

Всем привет!
получилось заставить "кнопку затемнения" затемнять на всех сайтах, а видео "не трогать"
?

Нет.

Добавлено 22-02-2013 19:15:57

okkamas_knife пишет:

ща ещё подрихтую и получится отличный инструмент и что самое главное без всякой инициализации!:D

Кстати, можно заменить USER_SHEET на AGENT_SHEET и тогда будут работать стили которые не работают в userContent.css и userChrome.css, например удаление скроллбара.

Добавлено 22-02-2013 19:18:39

voqabuhe пишет:

Странно, а на английской версии [nightly] 22.0а1 эта проблема исчезла.

Это радует а то я уже собрался переписывать этот код. Может само рассосется.

Отредактировано bunda1 (22-02-2013 19:18:39)

Отсутствует

 

№596823-02-2013 21:42:30

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 980
UA: Firefox 10.0

Re: Custom Buttons

bunda1

Я про мигалку для Autocopy+3.
Иногда мигает совсем незаметно, например если выделять что-то вроде этого.
Разыскал некий альтернативный вариант, но незнаю, стоит ли такое городить...

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

Выделить код

Код:

/* Автоматически копирует выделенный текст на странице,
   если это разрешено в 'about:config' ..................................................................*/
var autocopy = {
    handleEvent: function(e) {
        if (
            e.button == 2 ||
            !custombuttons.getPrefs("Autocopy") ||
            /input|textarea|textbox|searchbar|findbar/.test(e.target.localName.toLowerCase())
        ) return;

        var win = e.target.ownerDocument.defaultView;
        var selection = win.getSelection().QueryInterface(Ci.nsISelectionPrivate);
        selection.addSelectionListener(this);
    },
    notifySelectionChanged: function(doc, selection, reason) {
        if (reason != 4) return;
        selection.removeSelectionListener(this);
        if (!selection.toString()) return;
        goDoCommand('cmd_copy');

        // выделенный текст мигает ....
        if (!custombuttons.getPrefs("Autocopy.selectingTextBlink")) return;
        var sc =
            doc.defaultView
            .QueryInterface(Ci.nsIInterfaceRequestor)
            .getInterface(Ci.nsIWebNavigation)
            .QueryInterface(Ci.nsIDocShell)
            .QueryInterface(Ci.nsIInterfaceRequestor)
            .getInterface(Ci.nsISelectionDisplay)
            .QueryInterface(Ci.nsISelectionController);

        setTimeout(function() {
            sc.setDisplaySelection(sc.SELECTION_OFF);
            sc.repaintSelection(sc.SELECTION_NORMAL);
        }, 50);
        setTimeout(function() {
            sc.setDisplaySelection(sc.SELECTION_ON);
            sc.repaintSelection(sc.SELECTION_NORMAL);
        }, 200);
    }
};
addEventListener("mousedown", autocopy, false, gBrowser);

Отсутствует

 

№596924-02-2013 00:59:39

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

Re: Custom Buttons

okkamas_knife пишет:

может проще через стили?

К сожалению не работает.

Добавлено 24-02-2013 01:05:24

Dumby пишет:

Я про мигалку для Autocopy+3.
Иногда мигает совсем незаметно, например если выделять что-то вроде этого.
Разыскал некий альтернативный вариант, но незнаю, стоит ли такое городить

Большое спасибо но мне кажется что старый вариант лучше, извини :)
И на http://ompldr.org/vaGtiMg/gray.html очень наглядно мигает.

Отредактировано bunda1 (24-02-2013 01:05:24)

Отсутствует

 

№597024-02-2013 03:26:17

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

Re: Custom Buttons

villa7 пишет:

Хотел обновиться, да не тут то было. В [firefox] 19 не работает кнопка Context Search

скрытый текст
http://forum.mozilla-russia.org/viewtopic.php?pid=533572#p533572

не знаю где автора искать, может кто возьмется починить, без нее же как без рук.

не то конечно,но мож кому интересно

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

Выделить код

Код:

var mouseEvent = {
Create_D:function()
{
    var div= document.createElementNS ("http://www.w3.org/1999/xhtml", "div");
    div.setAttribute('style','border-bottom: 1px solid rgb(0, 0, 0) ! important;;border-top: 1px solid rgb(0, 0, 0) ! important;display: none; margin-top: 3px; padding: 1px;')
    div.setAttribute('class','search_')
        var img= document.createElementNS ("http://www.w3.org/1999/xhtml", "img");
        ///////////sep////////////////
        var img_=img.cloneNode('true')
        img_.setAttribute('title','поиск на этом сайте с Google');
        img_.setAttribute('src','data:image/png;base64,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')
        img_.className='site'
        img_.setAttribute('style','cursor: pointer;margin-left:15px;margin-right:2px;')
        div.appendChild(img_);
        //img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        img_.addEventListener('click', comand.searsh_, false);
        ////////sep//////////////
        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QCsRXhpZgAATU0AKgAAAAgACQEaAAUAAAABAAAAegEbAAUAAAABAAAAggEoAAMAAAABAAIAAAExAAIAAAASAAAAigMBAAUAAAABAAAAnAMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAOw1ESAAQAAAABAAAOwwAAAAAAAXbyAAAD6AABdvIAAAPoUGFpbnQuTkVUIHYzLjUuMTAAAAGGoAAAsY//2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAPAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigD/2Q==')
        img_.className='sep_'
        div.appendChild(img_);
        ///////////sep////////////////
        var img_=img.cloneNode('true')
        img_.setAttribute('title','поиск картинок');
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAAEBAQICAgMDAwQEBAUFBQgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhgYGBkZGRsbGxwcHCAgICMjIy0tLTQ0NDU1NTo6OklJSUtLS01NTVRUVFdXV1paWlxcXF5eXmBgYGlpaW5ubm9vb3FxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6enx8fH9/f4ODg4eHh4mJiYqKipCQkJKSkpOTk5eXl5qamp6enp+fn6SkpKWlpampqaurq66urrCwsLa2tru7u7+/v8DAwMHBwcbGxsfHx8rKysvLy9HR0dLS0tTU1NbW1tnZ2dra2tvb29zc3N/f3+Hh4ejo6Onp6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMrQ230AAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGnRFWHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS4xMDD0cqEAAADTSURBVChTZY/ZUsJAFEQP4wRIYBIJqCAo7kKQgCggKoK4r4Asivr/vxFT4cXSfuo+VX3rNt4fEeTZ/WB0Ow5sAL6buxvbm6WvOfj4nNysGCDs67fJ1GNqQzqKJogvQeKFLuGUIFcsrfsxyTEXFrrYGj49DnfCiliZM7m8oO46GucPGU1R5TQdIvtuJxaNfh49ekBbhiJrgz3Y7+fMiH+jh2VSGLmV1wZ63K+0kxaWOry6PFlFKd3lWSBBShP874weXstx6s1C2SnWGlX3aL7lt/6BH1KzXMwe0jwzAAAAAElFTkSuQmCC')
        img_.className='s_img_g'
        img_.setAttribute('style','cursor: pointer;margin-left:2px;margin-right:2px;')
        div.appendChild(img_);
        //img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        img_.addEventListener('click', comand.searsh_, false);
        ////////sep//////////////
        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QCsRXhpZgAATU0AKgAAAAgACQEaAAUAAAABAAAAegEbAAUAAAABAAAAggEoAAMAAAABAAIAAAExAAIAAAASAAAAigMBAAUAAAABAAAAnAMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAOw1ESAAQAAAABAAAOwwAAAAAAAXbyAAAD6AABdvIAAAPoUGFpbnQuTkVUIHYzLjUuMTAAAAGGoAAAsY//2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAPAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigD/2Q==')
        img_.className='sep_'
        div.appendChild(img_);
        ///////////sep////////////////
        var img_=img.cloneNode('true')
        img_.setAttribute('title','поиск дополнений');
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABaUlEQVQ4y6WTW0sCQRiG/SEpVBDUVVfphbAEhWAlqYhrLWUlER2IIgrqYkEp6SBmudWiFf0SiSCwpAI7bJnprq6H/sTbGhJiEyt28fAN7zfz8DHDaABo/oPqBpovX7j4T1gOS6dNCcYiZbhOSrCHi2hugqNCwskVYNmXbxoSuPkCN3NWhCdahLLGKCfDcSBjOJiHeTeHPr8EyifCwGb9RMF0RIaHl+E+zoMJ5+AM5WALSBjaEWHayqLXm4GR/YB+Iw2iYIKTMB6WwIRE0EER9r0s+r1pGNZT6F55ReeigPb5F7TOPpMFTDCDkUAGA753GFYFdC08QedJEvkR2DbfzuntFBz+1K2ZFdCz9Ii2qQfo3Pck2MoZpVI/AqtXQAXjchIdk3fQMok/Ib6CaS0Z1c8pdlc8pqXjUOF7AqVSxDvQOq7RKERBi/UKdbDVnK3vkQWWS9Si1vstGIyxCqiBquZUXc429BfU+AL9Tqy8Q2Za8AAAAABJRU5ErkJggg==')
        img_.className='Addons'
        img_.setAttribute('style',' cursor: pointer;margin-right:2px;margin-left:2px')
        img_.addEventListener('click', comand.searsh_, false);
        //img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        div.appendChild(img_);
        ////////sep//////////////
        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QCsRXhpZgAATU0AKgAAAAgACQEaAAUAAAABAAAAegEbAAUAAAABAAAAggEoAAMAAAABAAIAAAExAAIAAAASAAAAigMBAAUAAAABAAAAnAMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAOw1ESAAQAAAABAAAOwwAAAAAAAXbyAAAD6AABdvIAAAPoUGFpbnQuTkVUIHYzLjUuMTAAAAGGoAAAsY//2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAPAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigD/2Q==')
        img_.className='sep_'
        div.appendChild(img_);
        ///////////sep////////////////
        var img_=img.cloneNode('true')
        img_.setAttribute('title','поиск на habrahab.ru');
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAD1JREFUOE9jYBgUoH7Bhv/kYLjjydEM0oPVgP9IAGYwNrEhYgCy02Fs5PAiGAYDb8AwiAWyvEBKsqZKXgAAMfpzswvdWPYAAAAASUVORK5CYII=')
        img_.className='habrahab'
        img_.setAttribute('style',' cursor: pointer;margin-right:2px;margin-left:2px')
        //img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        img_.addEventListener('click', comand.searsh_, false);
        div.appendChild(img_);
        ////////sep//////////////
        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QCsRXhpZgAATU0AKgAAAAgACQEaAAUAAAABAAAAegEbAAUAAAABAAAAggEoAAMAAAABAAIAAAExAAIAAAASAAAAigMBAAUAAAABAAAAnAMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAOw1ESAAQAAAABAAAOwwAAAAAAAXbyAAAD6AABdvIAAAPoUGFpbnQuTkVUIHYzLjUuMTAAAAGGoAAAsY//2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAPAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigD/2Q==')
        img_.className='sep_'
        div.appendChild(img_);
        ///////////sep////////////////
        var img_=img.cloneNode('true')
        img_.setAttribute('title','поиск на Ru.board');
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQA3hwE4iAI4iQU7jAc8jwk+kQo/kgtAjQ5Clg5DlxBDjhRHkBRInRZKnxxNlBZKoBdKoRlNoxpOpB1QqCBQliBQmCJWrSNWryZbsidbsyddsyhdtClftipgtytjuCxjuCxjuSxkuTZjrzluvTxruzxwvlV6vUZ3wk18xGCCtGSFuHSSvWGLym6Uz3eUw3+bw3mZzXue04Cbw4ukyZay3J+00rfH3bDF5cPQ48TT69fi8t/m8Onu9uvw+PL1+/X4/P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHd+UX4AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAI1JREFUGFdNzdkOgjAUBNAriLiDWhU1teC+o0UsiEv//6u4lVidt5NJZiD4hQ5d0PInvaqhycYdqwRf+p5TRsFSYDZs1DIRAGuZHtL7wjFVpygCIWf9LIIoayPfL7myiIwhlkS1l+fJ/iM7P/aNW7JNsJ1fj7S740BCHvK6+qVN47OqgvRqxUnB6aCilQObeRWuWFb10AAAAABJRU5ErkJggg==')
        img_.setAttribute('style',' cursor: pointer;margin-left:2px')
        img_.addEventListener('click', comand.searsh_, false);
        //img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        img_.className='ru.board'
        div.appendChild(img_);
        return div
},
init: function ()
{

    var appcontent = document.getElementById("appcontent");
        appcontent.addEventListener("DOMContentLoaded", mouseEvent.load, true);

        //alert(mouseEvent.pop_serah)
        //mouseEvent.pop_serah.setAttribute('style','margin-left:6px')
        //mouseEvent.pop_serah.setAttribute('image','')
        //var popup= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "menupopup");
        //mouseEvent.pop_serah.appendChild(popup);
        //var menuitem=document.createElement("menuitem");

},
Create:function()
{
        mouseEvent.pop_serah= document.createElementNS ("http://www.w3.org/1999/xhtml", "div");
    //var input= document.createElementNS ("http://www.w3.org/1999/xhtml", "input");
    //mouseEvent.pop_serah.appendChild(input);
        var div_=mouseEvent.pop_serah.cloneNode('true')
        var img= document.createElementNS ("http://www.w3.org/1999/xhtml", "img");
        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAQCAYAAAAbBi9cAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAACVJREFUOE9jqK+v56EGZqCGISAzRg0iHCGjYTQaRtTIb4MvHQEAmr+6MNt9NWgAAAAASUVORK5CYII=')
        img_.className='span_over'
        mouseEvent.pop_serah.appendChild(img_);
        img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        img_.addEventListener('mousedown', mouseEvent.dragHandler, false);

        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAJtJREFUOE9jKCsr+08JZoBqBtHk4P/UM+D///8MpGKQ6+EuIFUzSD3cAAYEOANk/gfiUCQxGNMYKgeSB+GZ6AbAFOwGSq7CYoALVGMaTA7dgA6gBEgzyHaQDYJohhA04B1QQzlUI8gAEPsu1DAQDTMA5oVyZBfAbIVJgmhQeCADvC6YiaYBZDvIEFC4wABuA0CpkKJoHB4GkJ2lAbs6yjrJzf3rAAAAAElFTkSuQmCC')
        img_.className='trans'
        img_.setAttribute('title','латыница/кирилица');
        img_.setAttribute('style','cursor: pointer;margin-left:2px;margin-right:2px;display:none;')
        img_.addEventListener('click',trans_.switchSelKeybLayout,false);
        img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        mouseEvent.pop_serah.appendChild(img_);

        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAgJJREFUOE91U9lOWlEU5Y8bHxoKSEEbyjxprIRKfG0lVMosoUzagqbxrfGtoVIpk5R5UHDVtQ3UB+5Ndu65Ofuus4Z9VIVCDk6nHTabBXa7FUbja/l2OGwwm00wmd4gn8/i8VGtK5XH48J4PMR8fve4v5CaTsfo97u4v5/Jt16vUwawWN5KUyaTxtHRBzktFotIpdMpPDzM4fW6lQFImQCNxh/0en8xGPTQ7XaEUa32W1hsbxuVAdxup/x0elpANPoZ8XgUkUhYmORyXwScPYoe0Cg23d62UK/XZJ1IxMRUjUYNl8sBtfoltNpXAkRTNze1uLz8LqAqg0GPyWSE8/MSjo9D4gV9oZEEWyzuV+aORgNZ03T+JwAHB37c3U3RbNZXuhkjGwlIMy8uygiHP4k8SiPAUpaKEgjAeeDp9GJryyAA7XZT4mRVq7+E1c1NVfY4J8JgZ8cjDc9nIBB4j1argbOzIlKphJiZzWbkXSp9xXDY/w/ArCmD5mxsvMD+/p6sl9GSBVOi/qurH6hUfsqe1Wp+YrAuHp/vneikXurmIWSQTMZRLn/DbDaBTqdRBnganIUMElMg5evrigza0gNGqciA96PTaaNYzCMUCkoaJydJAaA3HO9VCusk+P0+aVwa+/xN+kzk8DCgzCAY/Aimw6hYHBpeddLmjOzuesUPHv4PoAs4ih93go8AAAAASUVORK5CYII=')
        img_.className='cop_y_'
        img_.setAttribute('title','копировать');
        img_.setAttribute('style','cursor: pointer;margin-left:2px;margin-right:2px;')
        img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        img_.addEventListener('click',comand.copy_,false);
        mouseEvent.pop_serah.appendChild(img_);

        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAIAAAB/UwMIAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAUElEQVQ4T2NoIB0wkK6lgc56/v//D3EkhAEk4QAuCPcF1G3U0YNmLXJQ4bSHHD3k+AfZ63DfQizH5za0gMESblgdgxb06PaQrIekVEev9AYARgLv3322bcwAAAAASUVORK5CYII=')
        img_.setAttribute('title','открыть адресс');
        img_.setAttribute('style','cursor: pointer;margin-left:2px;margin-right:2px;')
        img_.addEventListener('click',comand.link_,false);
        img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        img_.className='ur_l_'
        mouseEvent.pop_serah.appendChild(img_);

        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/png;base64,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')
        img_.setAttribute('title','поиск с google');
        img_.setAttribute('style','cursor: pointer;margin-left:2px;margin-right:2px;')
        img_.className='search_all'
        img_.addEventListener('click',comand.searsh_,false);
        //img_.setAttribute("oncontextmenu", "event. stopPropagation ();event. preventDefault ();comand.searsh_(event)")
        img_.addEventListener('contextmenu',comand.searsh_,true);
        //alert(mouseEvent.pop_serah+img_)
        mouseEvent.pop_serah.appendChild(img_);
        img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        

        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA1VJREFUeNqkU11oHFUUPvdn7uzszv6lm+3P7kZb00j1yU0I2s2LqOhCUmhEEPqgD0XQahFBabSt5EmLWLT4VDG+6aOKqGAM9Sc2LVoTq9RCaLJJk+zOzv4k7szOzt+9TgIrIr554Hu4h3Pu+c53zkFCCPg/Rv/tmJyczGcy2ZNRVS1IjCUMo5UyDGNd1/V123amg4IXg7DVbjzqMjh79vX0yEjhk2wudxgjBKZpQqVSgXq97m1slOn22/O87VArwESAd/9mcPr0mTuKxeI8ITg5d3muNDs7G2k0GrvkkIKtjk3L5QoI7vvZzF6tr6/PU1X1nSBNCfAmCWipg4ND861Wqzk19WGFhRRz/PHx/WE1hiNqHJpbLVhdK8PNxSUcS/QohcIDH1y9ckXq7e09jBD6Cp06NfEypXT/yurt6rm33n42GlHSn3/xJXw9PQOGYULgh6XlUtBKAxiTQC+XoKzV3zj53DPhfD5foR3browVxyrJZOJ9jJEMCMDnHK79sgCdjg2NZnMnedty2WzQSiCCZU6cO39haurie59ijumy67pPM1mRtWoVfI9D8dFHwA0E61bu2ksvPg9VXQdJCvnV8oamhCNR8uBDI853l37wQAj94MDAnc1GXaGEwpNPjMPttTWo1WpwsL8fzrz6ChSLjwEIZFyf//mjucuzhueK79FTJ46wTPTuu8q1WqG5aQ2Mjo0eGB4aHg4pci6mRsFzHZBkGUyr016YX/j920vfLDJCtjDDM65Nf0LA4vDaCydUUFDOE9CvadqhdqudY3IoGYslUpQShDAWDb36Z08ybihhpY6B3PB951e65ZZ29uDe/LH20sxnK2a6Y+7p2avh3XwPcN7LBUoEm6YKhEhuX9rzMbZAgOZ7YlnYoRpO0fbOB8PH7hH2+WlrobSiccYMxZGrQHAcBI0jxMPAkcwJIcgVdsBmM4SoDrJppDOGj7oKswCOKuNDR45DXkmxXcyQw4woQvJUwSMUCQ9z4iEZI5siZDSsdmv1t6Md9F8XhnZH0D42iu6/LyNlU2lipzYljDiLdThyieP7HDumYdgrH19wiaKEg9n7Qdo/ztp0wTT+EIu3rvL1G9f4w82Ub8ctp8Y2Ax2IV4snXdsd9K//OMT/EmAA4iuZQlHh+SkAAAAASUVORK5CYII=')
        img_.setAttribute('title','поиск на странице');
        img_.setAttribute('style','cursor: pointer;margin-left:2px;margin-right:2px;')
        img_.className='tr_'
        img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        mouseEvent.pop_serah.appendChild(img_);
        img_. oncontextmenu = function (event)
        {
            event. preventDefault ();
            searsh_panel.tes()
        }
        img_. onclick = function (event)
        {
            searsh_panel.FindInPage(mouseEvent.input.value, event)
        }

        var img_=img.cloneNode('true')
        img_.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAjRJREFUOE/NkztookEQx9OkSHNNCpu0AfEV8URSpNDGQgSDqQQLD8TC5gqvsPBAQQ98FBofoKBGhQQxFr7AN0j0VPCBig/U7gRPULS6dm73A+USv3Dl3cKP2f2+nf/O7MyenPwv4+Xl5a7X61n/Gs9isTidzWaUbrdL6ff7BMjxwH5dLBbDwWAQkH2u1+uU7XZ7Riq+XC4/DodDyGazkMvl3iUWi4HL5YL7+3tIp9OAfALz+fz8SHS9Xp+Px+NANBoFu90ODoeDFCyEBZ1OJ0EkEoFCoZAhjXK1Wp2NRqNvj4+Pv7AgdiYDC+1FsX16epqSCm42Gxam0+l8RqLg9/sB31cgEDhYn893SPnh4QHy+XwOFeriSNBqtV663e5hKBRS4Z/ValWYSCSEqVRKmEwmCYtB95bBUcfjcZhMJhlUyNditVqNhio2FYvFwOfzQafT2S0Wi/BPjEajMJPJXOODGo2Gt1wu10lT9Hq910igJxAIgE6nA5fLBZFIBFKp9BUSiQQ0Gs3PUql0t9vthAjKkWC73f6OHH9wOBxgsVhwdXUFbDabmO9hMpmwB+/TarXrZrP5CbXY6ZEgalqfQqGo39zcEE5YEMNgMA7gqDH4G41GI/bp9XoYDAZfSVMOh8OXHo+njFOiUqnA4/FAJpOBSqUiRalUglqthkqlAu8+vVar9QFV6lkul09vb2/BYDB8sdlsFAyq/MHu5yaTiYJa5fgO356AWuYCvRCr2WwmqvnPx2+1SbqlT+ijQwAAAABJRU5ErkJggg==')
        img_.setAttribute('title','заменить выделеное переводом');
        img_.setAttribute('style','cursor: pointer;margin-left:2px;margin-right:2px;')
        img_.className='tr_'
        img_.addEventListener('mouseover',mouseEvent.open_menu, false);
        mouseEvent.pop_serah.appendChild(img_);
        img_. oncontextmenu = function (event)
        {
            event. preventDefault ();
            //searsh_panel.tes()
        }
        img_. onclick = function (event)
        {
            js_.google()
            //searsh_panel.FindInPage(mouseEvent.input.value, event)
        }
},
load: function ()
{
    var doc = getBrowser (). contentDocument;

     doc. addEventListener ('mousedown',mouseEvent.mousedown_, true);
     doc. addEventListener ('mouseup',mouseEvent.onmouseup_, true);
},
onmouseup_: function (evt)
{
    var doc = getBrowser (). contentDocument;
    var win=getBrowser (). contentDocument. defaultView
    var body =doc. getElementsByTagName ("body") [0]
    var divPanel = doc. getElementById('divPanel');
    var divLookup  = doc. getElementById('divLookup');
    var txtSel = searsh_panel.getText();

    //exit if no text is selected
    if(txtSel=="")
    {
        if(divPanel)
        {
            if(!mouseEvent.clickedInsideID(evt.target,'divPanel'))
                divPanel.parentNode.removeChild(divPanel);
        }
        if(divLookup)
            divLookup.parentNode.removeChild(divLookup);

        return;
    }


    //possible cleanup
    if(divPanel)
    {
        if(!mouseEvent.clickedInsideID(evt.target,'divPanel'))
            divPanel.parentNode.removeChild(divPanel);
        return;
    }


    //remove div if exists
    if(divLookup)
    {
        divLookup.parentNode.removeChild(divLookup);
    }
    //div container

    divLookup = doc.createElement('div');
    divLookup.id='divLookup'
    var w=win.innerWidth
    var h=win.innerHeight
    var height=h-(evt.clientY)
    var width=w-(evt.clientX)
    //alert(height)
    if(width<175)
        width=evt.clientX+win.scrollX-180
    else
        width=evt.clientX+win.scrollX
    if(height<60)
    {

        height=evt.clientY+win.scrollY+(35-height)
    }
    else
        height=evt.clientY+win.scrollY+7
    divLookup.setAttribute('style',' position:absolute; top:'+height+'px; left:'+width+'px;')

    mouseEvent. imgLookup=  doc.createElement ("img");
    mouseEvent.imgLookup.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAHCAMAAADpsEdvAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFAAAACQkJERERFBQUIyMjMDAw/2oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh6TpvAAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAC5JREFUGFdj+P//PwPzf0YGEA1EbGz/WdhADBCTjYmVDchhADEhgAFFHEU9whwAsYocmb3OIP0AAAAASUVORK5CYII=');
    divLookup.appendChild(mouseEvent. imgLookup);
    divLookup.addEventListener('mouseover', mouseEvent.lookup, false);
    body.appendChild(divLookup);
},
clickedInsideID: function(target, id)
{
    if (target.getAttribute('id')==id)
        return target;

    if (target.parentNode) {
        while (target = target.parentNode) {
            try{
                if (target.getAttribute('id')==id)
                    return target;
            }catch(e){
            }
        }
    }

    return null;
},
mousedown_: function (event)
{
    var doc = getBrowser (). contentDocument;
    var divPanel = doc. getElementById('divPanel');
    var divLookup  = doc. getElementById('divLookup');

    if(divPanel)
    {
        if(!mouseEvent.clickedInsideID(event.target,'divPanel'))
            divPanel.parentNode.removeChild(divPanel);
    }

    if(divLookup){
        divLookup.parentNode.removeChild(divLookup);
        }
},
lookup: function (evt)
{
    var doc = getBrowser (). contentDocument;
    var divResult = null;
    var divPanel = doc. getElementById('divPanel');
    var divLookup  = doc. getElementById('divLookup');
    var top = divLookup.style.top;
    var left = divLookup.style.left;
    var body =doc. getElementsByTagName ("body") [0]
    var txtSel = comand.Tex_Input();
    var t = doc. defaultView. getSelection (). toString ();
    if(txtSel=="" && t=="")
    {
        if(doc. getElementById('divPanel'))
            divPanel.parentNode.removeChild(divPanel);
        return;
    }
    //cleanup divs
    if(doc. getElementById('divPanel'))
    {
        divPanel.parentNode.removeChild(divPanel);
    }
    divLookup.parentNode.removeChild(divLookup);


    //div container
    divPanel=  doc.createElement ("div");
    //alert(evt.clientY+'/'+top)
    divPanel.id='divPanel'
    divPanel.setAttribute('style','background-color: rgba(110, 150, 179, 0.59) ! important; color:#000000; position:fixed; top:'+evt.clientY+'px; left:'+left+'; min-width:auto; min-height:auto; max-width:auto; padding:5px; font-size:small; text-align:left; z-index:10000; border-radius:3px;');
    //divPanel.addEventListener('mousedown', mouseEvent.dragHandler, false);
    //var img=  doc.createElement ("img");
    //img.setAttribute('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALDwAACw8BkvkDpQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAkUlEQVQ4T62T0Q2AMAhE2cY1HMcNdDY7HJbGa2gFqo0fDabAC3dUYmbyzrannPLzkgubBTCCPABosqI1TQHQcdaDIlp4FYjEeqfqak+kf0oCgFpCZOQ/JkJvZKDOSX3jwdvGBgJDRd9o170HZTsegPLbkmPu/L53AWjU0foOAdYEPTiUMPp54JnrwTTg6yoxwQWUa5DpIWbeyQAAAABJRU5ErkJggg==');
    //img.setAttribute('style','margin-left:6px')
    //divPanel.appendChild(img);
    //var img=  doc.createElement ("img");
    //img.setAttribute('src','');
    //img.setAttribute('style','margin-left:6px')
    //var pop=document.createElement("menupopup");
    //mouseEvent.pop_serah.addEventListener("mouseover", mouseEvent.open, false);
    //pop.openPopup(label, "after_start" ,0, 2, false, false);
    mouseEvent.Create()
    var div_2=mouseEvent.Create_D()
    var div=mouseEvent.pop_serah
    var divIn=  doc.createElement ("div");
    divIn.setAttribute('class','span_over')
    divIn.innerHTML='<input type="text"  style="margin-right: 0px; margin-bottom: 5px; padding-right: 0px;" value="" />'
    var input=divIn.firstChild
    mouseEvent.input=input
    if(txtSel)
    {
        var img=div.firstChild.nextSibling;
        img.style.display=''
        input.value=txtSel+' '
    }
    else
        input.value=t+' '
    div.appendChild(divIn);
    div.appendChild(div_2);
    divPanel.appendChild(div);

    body.appendChild(divPanel);
},
open_menu: function (evt)
{
    var el=evt. originalTarget;
    var class_el=el.className
    if(class_el=='search_all')
    {
        el.parentNode.getElementsByClassName('search_')[0].style.display='block'
        el.parentNode.getElementsByClassName('span_over')[1].style.display='none'
    }
    else
    {
        el.parentNode.getElementsByClassName('search_')[0].style.display='none'
        el.parentNode.getElementsByClassName('span_over')[1].style.display='block'
    }
},
dragHandler:function(e)
{
    e. preventDefault ();
    e. stopPropagation ();
    var doc = getBrowser (). contentDocument;
    var htype='-moz-grabbing';
    if (e == null) return;//{ e = window.event;}  // htype='move';}
    var target = e.target;// != null ? e.target : e.srcElement;

    if(target.nodeName=='IMG')
        var target =target.parentNode
    mouseEvent.orgCursor=target.style.cursor;

    if (target = mouseEvent.clickedInsideID(target, 'divPanel')) {
        mouseEvent.savedTarget=target;
        target.style.cursor=htype;
        mouseEvent.dragOK=true;
        mouseEvent.dragXoffset = e.clientX-target.offsetLeft;
        mouseEvent.dragYoffset = e.clientY-target.offsetTop;

        //set the left before removing the right
        target.style.left = e.clientX - mouseEvent.dragXoffset + 'px';
        target.style.right = null;


        doc.addEventListener('mousemove',mouseEvent.moveHandler,false);
        doc.addEventListener('mouseup',mouseEvent.dragCleanup,false);
        return false;
    }
},
moveHandler:function(e)
{
    if (e == null) return;// { e = window.event }
    if ( e.button<=1 && mouseEvent.dragOK ){
        mouseEvent.savedTarget.style.left = e.clientX - mouseEvent.dragXoffset + 'px';
        mouseEvent.savedTarget.style.top = e.clientY - mouseEvent.dragYoffset + 'px';
        return false;
    }
},
dragCleanup:function(e)
 {
    var doc = getBrowser (). contentDocument;
    doc.removeEventListener('mousemove',mouseEvent.moveHandler,false);
    doc.removeEventListener('mouseup',mouseEvent.dragCleanup,false);
    mouseEvent.savedTarget.style.cursor=mouseEvent.orgCursor;

    mouseEvent.dragOK=false; //its been dragged now
    mouseEvent.didDrag=true;

}
}

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);
                range.deleteContents();
                range.insertNode(document.createTextNode(TBODY_));
            }
        }
        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 ();
               var pattern = /\r\n|\r|\n/g;
                var sel = sel .replace(pattern, " ");
              sel = escape (convertFromUnicode ("UTF-8", sel))
                var url1='http://api.microsofttranslator.com/v2/ajax.svc/TranslateArray?appId=%22'+st+'%22&texts=[%22+'    
                var url=url1+sel+'%22]&from=%22%22&to=%22ru%22&oncomplete=_mstc2&onerror=_mste2&loc=ru&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 n='"TranslatedText":"'. toString ();
                        var h =html_t.indexOf(n)+n.length;
                        var st =html_t.slice(h,html_t.length)
                        var h =st.indexOf('TranslatedTextSentenceLengths')-5;
                        var st =st.slice(0,h)
                    var st = st .replace(/%22/g,"\r\n");
                        var range = content.getSelection().getRangeAt(0);
                        range.deleteContents();
                        range.insertNode(document.createTextNode(st));
                    }
                }
                xmlhttp.send(null);
            }
        }
        xmlhttp.send(null)    
    }
}

var comand = {
Tex_Input:function()
{
    var focusEl= document.commandDispatcher.focusedElement;
    if(focusEl)
    {
        var tagN=focusEl.tagName;
        if(tagN=='html:input'||tagN=='INPUT'||tagN=='TEXTAREA')
        {
            mouseEvent.focusE=focusEl
            var t = focusEl.value. toString ();
            if(!(t.length==0))
            {
                var sell = t.substring(focusEl.selectionStart, focusEl.selectionEnd);
                sell. toString ();
                if(sell.length==0)
                {
                    mouseEvent.focusE_1=null
                    mouseEvent.focusE_2=null
                    mouseEvent.focusE_1=focusEl.selectionStart
                    mouseEvent.focusE_2=focusEl.selectionEnd
                    return t;
                }
                else
                {
                    return sell;
                }
            }
        }
    }
    return ''
},
searsh_:function(e)
{
    
        e. preventDefault ();
        e. stopPropagation ();
 
    var target = e.target
    var doc = getBrowser (). contentDocument;
    var query=mouseEvent.input.value
    query = escape (convertFromUnicode ("UTF-8", query));
    var host=doc .location. hostname;
    host = encodeURIComponent (host);
    if (e. button == 2)
    {
        var searchUrl = "https://www.google.com/search?as_q=" + query + "&as_sitesearch=" + host;
        getBrowser (). selectedTab = getBrowser (). addTab(searchUrl);
        return
    }
    switch (target.className)
    {
        case 'site':
            
        break;
        case 'search_all':
            var searchUrl = "https://www.google.ru/search?q="+ query
        break;
        case 's_img_g':
            var searchUrl = "https://www.google.ru/images?q="+ query
        break;
        case 'habrahab':
            var searchUrl ="http://habrahabr.ru/search/?q="+ query
        break;
        case 'ru.board':
            var searchUrl = "https://www.google.com/search?as_q=" + query + "&as_sitesearch=forum.ru-board.com"
        break;
        case 'Addons':
            var searchUrl ="https://addons.mozilla.org/ru/firefox/search/?q="+ query
        break;
    }
    getBrowser (). selectedTab = getBrowser (). addTab(searchUrl);
},
link_:function(e)
{
    var target = e.target;
    var t=mouseEvent.input.value
    var doc = getBrowser (). contentDocument;
    //var t = doc. defaultView. getSelection (). toString ();
    var const_='custombutton'
    var url_con=t.slice(0,12)
    alert(url_con)
    if(url_con==const_)
    {
        gBrowser.loadURI(t)
    }
    else
    {
        getBrowser (). selectedTab = getBrowser (). addTab (t)
    }
},
copy_:function(e)
{
    var t=mouseEvent.input.value
    var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
    var doc = getBrowser (). contentDocument;
    var ts = doc. defaultView. getSelection ();
    if(!ts||ts.toString().length==0)
    {
        clipboard.copyString(t.toString());
        return;
    }
    clipboard.copyString(ts.toString());
},
trans_:function(e)
{
    var t=mouseEvent.input.value
    var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
    clipboard.copyString(t);
}
}
var trans_={};
trans_.convTableForward = {
    "\"": "@",
    ":": "^",
    ";": "$",
    "?": "&",
    ",": "?",
    "/": "|",
    ".": "/",
    "э": "'",
    "б": ",",
    "ю": ".",
    "Ж": ":",
    "ж": ";",
    "Б": "<",
    "Ю": ">",
    "Э": "\"",
    "х": "[",
    "ъ": "]",
    "ё": "`",
    "Х": "{",
    "Ъ": "}",
    "Ё": "~",
    "№": "#",
    "Ф": "A",
    "ф": "a",
    "И": "B",
    "и": "b",
    "С": "C",
    "с": "c",
    "В": "D",
    "в": "d",
    "У": "E",
    "у": "e",
    "А": "F",
    "а": "f",
    "П": "G",
    "п": "g",
    "Р": "H",
    "р": "h",
    "Ш": "I",
    "ш": "i",
    "О": "J",
    "о": "j",
    "Л": "K",
    "л": "k",
    "Д": "L",
    "д": "l",
    "Ь": "M",
    "ь": "m",
    "Т": "N",
    "т": "n",
    "Щ": "O",
    "щ": "o",
    "З": "P",
    "з": "p",
    "Й": "Q",
    "й": "q",
    "К": "R",
    "к": "r",
    "Ы": "S",
    "ы": "s",
    "Е": "T",
    "е": "t",
    "Г": "U",
    "г": "u",
    "М": "V",
    "м": "v",
    "Ц": "W",
    "ц": "w",
    "Ч": "X",
    "ч": "x",
    "Н": "Y",
    "н": "y",
    "Я": "Z",
    "я": "z",
    __proto__: null
};

trans_.convTableBackward = { __proto__: null };
for(var c in trans_.convTableForward)
    trans_.convTableBackward[trans_.convTableForward[c]] = c;

trans_.insertText = function(ta, text, noFocus) {

    var editor = ta.QueryInterface(Components.interfaces.nsIDOMNSEditableElement)
        .editor
        .QueryInterface(Components.interfaces.nsIPlaintextEditor);
    if(editor.flags & editor.eEditorReadonlyMask)
    {
        mouseEvent.focusE=null
        return;
    }

    var sTop = ta.scrollTop;
    var sHeight = ta.scrollHeight;
    var sLeft = ta.scrollLeft;
    // var sWidth = ta.scrollWidth;
    if(noFocus) {
        var val = ta.value;
        var ss = ta.selectionStart;
        ta.value = val.substring(0, ss) + text + val.substring(ta.selectionEnd);
        var se = ss + text.length;
        ta.selectionStart = se;
        ta.selectionEnd = se;
    }
    else {
        if(text)
            editor.insertText(text);
        else
            editor.deleteSelection(0);
    }
    ta.scrollTop = sTop + (ta.scrollHeight - sHeight);
    ta.scrollLeft = sLeft; // + (ta.scrollWidth - sWidth);
     mouseEvent.focusE=null
     mouseEvent.focusE_1=null
     mouseEvent.focusE_2=null
};
trans_.inPrimaryLayout = function(s) {
    var c;
    for(var i = 0, l = s.length; i < l; i++) {
        c = s.charAt(i);
        if(c in trans_.convTableForward)
            return true;
        if(c in trans_.convTableBackward)
            return false;
    }
    return false;
};
trans_.switchKeybLayout = function(convTable, s) {
    var r = "", c;
    for(var i = 0, l = s.length; i < l; i++) {
        c = s.charAt(i);
        r += c in convTable ? convTable[c] : c;
    }
    return r;
};
trans_.switchSelKeybLayout = function(s) {
        if(mouseEvent.focusE)
        {
                var val = mouseEvent.focusE.value;
                var sel = val.substring(mouseEvent.focusE_1, mouseEvent.focusE_2);
                mouseEvent.focusE.focus()
                mouseEvent.focusE.setSelectionRange(mouseEvent.focusE_1, mouseEvent.focusE_2);
        }
        
    sel = trans_.switchKeybLayout(
        trans_.inPrimaryLayout(sel) ? trans_.convTableForward : trans_.convTableBackward,sel);
    alert(mouseEvent.focusE_1+'-'+ mouseEvent.focusE_2)
    trans_.insertText(mouseEvent.focusE, sel);
};
mouseEvent.init()

Отсутствует

 

№597124-02-2013 04:13:11

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 980
UA: Firefox 10.0

Re: Custom Buttons

bunda1 пишет:

старый вариант лучше, извини :)

Нет так нет, разумеется ни на чём не настаиваю :)

bunda1 пишет:

И на http://ompldr.org/vaGtiMg/gray.html очень наглядно мигает.

:/ а вот на моей лисе почти не мигает, попробую показать как это у меня выглядит:

скрытый текст
http://storage2.static.itmages.com/i/13/0224/h_1361663128_7365698_ea0a0e99f0.jpeg

Отсутствует

 

№597224-02-2013 09:10:25

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: unknown 0.0

Re: Custom Buttons

Dumby
По гуглил, и оказалось что  про кнопки негде больше спросить как здесь. На [firefox] 19 перестала работать Context Search, но работает вот эта

скрытый текст
// https://github.com/Griever/userChromeJS/blob/master/contextSearcher.uc.js
// http://forum.mozilla-russia.org/viewtopic.php?id=52666

// contextSearcher button for Custom Buttons
// (code for "initialization" section)

// (c) Griever (bunda1)
// version 0.0.7 2012-12-22

// mod 0.0.1 2013-02-19 (2k1dmg)

if (window.contextSearcher) {
  window.contextSearcher.destroy();
  delete window.contextSearcher;
}

window.contextSearcher = {
  NEW_TAB: true,

  _regexp: {
    hiragana: "[\\u3040-\\u309F]+",
    katakana: "[\\u30A0-\\u30FA\\u30FC]+",
    kanji   : "[\\u4E00-\\u9FA0]+",
    suuji   : "[0-9_./,%-]+",
    eisu_han: "\\w[\\w\\-]*",
    eisu_zen: "[\\uFF41-\\uFF5A\\uFF21-\\uFF3A\\uFF10-\\uFF19]+",
    hankaku : "[\\uFF00-\\uFFEF]+",
    hangul  : "[\\u1100-\\u11FF\\uAC00-\\uD7AF\\u3130-\\u318F]+",
  },

  get startReg() {
    let reg = {};
    for(let n in this._regexp) {
      reg[n] = new RegExp('^' + this._regexp[n]);
    }
    delete this.startReg;
    return this.startReg = reg;
  },
  get endReg() {
    let reg = {};
    for(let n in this._regexp) {
      reg[n] = new RegExp(this._regexp[n] + '$');
    }
    delete this.endReg;
    return this.endReg = reg;
  },
  getCharType: function(aChar) {
    var c = aChar.charCodeAt(0);
    //if (c >= 0x30 && c <= 0x39) return "suuji";
    if (c >= 0x30 && c <= 0x39 || c >= 0x41 && c <= 0x5A || c >= 0x61 && c <= 0x7A || c === 0x5F) return "eisu_han";
    if (c >= 0x30A0 && c <= 0x30FA || c === 0x30FC) return "katakana";
    if (c >= 0x3040 && c <= 0x309F) return "hiragana";
    if (c >= 0x4E00 && c <= 0x9FA0) return "kanji";
    if (c >= 0xFF41 && c <= 0x9F5A || c >= 0xFF21 && c <= 0xFF3A || c >= 0xFF10 && c <= 0xFF19) return "eisu_zen";
    if (c >= 0xFF00 && c <= 0xFFEF) return "hankaku";
    if (c >= 0x1100 && c <= 0x11FF || c >= 0xAC00 && c <= 0xD7AF || c >= 0x3130 && c <= 0x318F) return "hangul";
    return "";
  },

  searchText: '',
  searchEngines: [],
  init: function(){
    this.isMac = navigator.platform.indexOf("Mac") == 0;
    this.searchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
    this.context = document.getElementById('contentAreaContextMenu');
    var searchselect = document.getElementById('context-searchselect');
    searchselect.style.display = 'none';

    this.menu = this.context.insertBefore(document.createElement('menu'), searchselect);
    this.menu.setAttribute('id', 'context-searcher');
    this.menu.setAttribute('class', 'menu-iconic');
    this.menu.setAttribute('accesskey', searchselect.accessKey);
    this.menu.setAttribute('onclick', 'if (event.target == this) { contextSearcher.command(event); closeMenus(this); }');

    this.popup = this.menu.appendChild( document.createElement('menupopup') );

    this.context.addEventListener('popupshowing', this, false);
    this.menu.addEventListener('DOMMouseScroll', this, false);
    gBrowser.mPanelContainer.addEventListener(this.isMac ? 'mousedown' : 'click', this, false);
    window.addEventListener('unload', this, false);
  },

  uninit: function() {
    this.context.removeEventListener('popupshowing', this, false);
    this.menu.removeEventListener('DOMMouseScroll', this, false);
    gBrowser.mPanelContainer.removeEventListener('click', this, false);
    gBrowser.mPanelContainer.removeEventListener('mousedown', this, false);
    window.removeEventListener('unload', this, false);
  },

  destroy: function(){
    this.uninit();
    document.getElementById('context-searchselect').style.removeProperty('display');
    var m = document.getElementById('context-searcher');
    if (m)
      m.parentNode.removeChild(m);
  },

  handleEvent: function(event) {
    if (this[event.type])
      this[event.type](event);
  },
 
  unload: function(e){
    this.uninit();
  },

  DOMMouseScroll: function(e) {
    if (this.searchEngines.length === 0)
      this.searchEngines = this.searchService.getVisibleEngines({});
    if (!this.searchEngines || this.searchEngines.length == 0)
      return;
   
    var index = this.searchEngines.indexOf(this.searchService.currentEngine);
//    var newEngine = e.detail > 0?
//      this.searchEngines[index+1] || this.searchEngines[0]:
//      this.searchEngines[index-1] || this.searchEngines[this.searchEngines.length -1];
    var newEngine = e.detail > 0? this.searchEngines[index+1] : this.searchEngines[index-1];
    if (!newEngine)
      return;
    this.searchService.currentEngine = newEngine;
    this.setMenuitem();
  },

  command: function(e){
    var target = e.target;
    var engine = e.target.engine || this.menu.engine;

    var submission = engine.getSubmission(this.searchText, null);
    if (!submission)
      return;

  // mod 0.0.1
  //var newtab = this.NEW_TAB || e.button === 1 || e.shiftKey || e.ctrlKey;
   // if (!newtab) {
   if ( e.button == 1 && !e.shiftKey && !e.ctrlKey && !e.metaKey && !e.altKey ) {
      //loadURI(submission.uri.spec, null, submission.postData, false);
             gBrowser.addTab(submission.uri.spec, {
            postData: submission.postData,
            ownerTab: gBrowser.mCurrentTab,
            relatedToCurrent: true
          });
    } else {
      gBrowser.selectedTab = gBrowser.addTab(submission.uri.spec, {
        postData: submission.postData,
        ownerTab: gBrowser.mCurrentTab,
        relatedToCurrent: true
      });
    }
  },

  click: function(event) {
    if (event.button === 2) {
      this._clickNode = event.rangeParent;
      this._clickOffset = event.rangeOffset;
      this._clientX = event.clientX;
    } else {
      this._clickNode = null;
      this._clickOffset = 0;
      this._clientX = 0;
    }
  },

  mousedown: function(event) {
    this.click(event);
  },

  setMenuitem: function() {
    var currentEngine = this.searchService.currentEngine;
    var l = this.searchText.length > 16? this.searchText.substr(0, 16) + '...' : this.searchText;
    this.menu.engine = currentEngine;
    //this.menu.setAttribute('label', gNavigatorBundle.getFormattedString("contextMenuSearchText", [currentEngine.name, l]));
    //this.menu.setAttribute('label', '"' + l + '" \u3092\u691c\u7d22');
    //this.menu.setAttribute('label','Искать ' + '"' + l + '"');
    // mod 0.0.1
    try {
        this.menu.setAttribute('label', gNavigatorBundle.getFormattedString("contextMenuSearch", [currentEngine.name, l]));
    }
    catch(e) {
        this.menu.setAttribute('label', gNavigatorBundle.getFormattedString("contextMenuSearchText", [currentEngine.name, l]));
    }
    this.menu.setAttribute('tooltiptext', currentEngine.name);
    if (currentEngine.iconURI)
      this.menu.style.listStyleImage = 'url("' + currentEngine.iconURI.spec + '")';
    else
      this.menu.style.removeProperty('list-style-image');
  },

  popupshowing: function(e){
    if (e.target != this.context) return;

    this.searchText =
      gContextMenu.isTextSelected? this.getBrowserSelection() :
      gContextMenu.onImage? gContextMenu.target.getAttribute('alt') :
      //gContextMenu.onLink? gContextMenu.linkText() :
      gContextMenu.onTextInput? this.getTextInputSelection() :
      this.getCursorPositionText();

    if (!this.searchText || !/\S/.test(this.searchText)) {
      this.menu.hidden = true;
      return;
    }
    if (this.searchText.length > 256)
      this.searchText = this.searchText.substr(0, 256);
    this.menu.hidden = false;
   
    if (!this.popup.hasChildNodes() || e.ctrlKey)
      this.createMenuitem();
   
    this.setMenuitem();
  },
 
  createMenuitem: function(){
    this.searchEngines = this.searchService.getVisibleEngines({});
    if (!this.searchEngines || this.searchEngines.length == 0)
      return;

    var f;
    while (f = this.popup.firstChild) {
      this.popup.removeChild(f);
    }

    this.menu.engine = this.searchService.currentEngine;
    if (this.menu.engine.iconURI)
      this.menu.style.listStyleImage = 'url("' + this.menu.engine.iconURI.spec + '")';
    else
      this.menu.style.removeProperty('list-style-image');
    for (var i = 0, s = this.searchEngines, l = s.length; i < l; i++) {
      var engine = s[i];
      var m = document.createElement('menuitem');
      m.setAttribute('label', engine.name);
      m.setAttribute('class', 'menuitem-iconic bookmark-item');
      if (engine.iconURI) {
        m.setAttribute('image', engine.iconURI.spec);
      }
      m.setAttribute('oncommand', 'contextSearcher.command(event);');
      m.setAttribute('onclick', 'checkForMiddleClick(this, event);');
      m.engine = engine;
      this.popup.appendChild(m);
    }
  },
 
  getBrowserSelection: function () {
    var win = document.commandDispatcher.focusedWindow;
    var sel = win.getSelection();
    var str = '';
    if (sel.isCollapsed)
      return str;

    for(var i = 0, l = sel.rangeCount; i < l; i++) {
      str += sel.getRangeAt(i) + ' ';
    }
    return str.replace(/^\s*|\s*$/g, '').replace(/\s+/g, ' ');
  },
 
  getTextInputSelection: function () {
    var elem = document.commandDispatcher.focusedElement;
    var str = elem.value.slice(elem.selectionStart, elem.selectionEnd);
    return str.replace(/^\s*|\s*$/g, '').replace(/\s+/g, ' ');
  },

  getCursorPositionText: function() {
    var node = this._clickNode;
    var offset = this._clickOffset;
    if (!node || node.nodeType !== Node.TEXT_NODE)
      return "";

    var text = node.nodeValue;

    // 文字の右半分をクリック時に次の文字を取得する対策
    var range = node.ownerDocument.createRange();
    range.setStart(node, offset);
    var rect = range.getBoundingClientRect();
    range.detach();
    if (rect.left >= this._clientX)
      offset--;

    if (!text[offset]) return "";
    var type = this.getCharType(text[offset]);
    if (!type) return "";

    var mae = text.substr(0, offset);
    var ato = text.substr(offset); // text[offset] はこっちに含まれる
    var ato_word = (this.startReg[type].exec(ato) || [""])[0];
    var str = this.endReg[type].test(mae) ? RegExp.lastMatch + ato_word : ato_word;

    if (str.length === 1) {
      if (type === "kanji") {
        if (this.startReg["hiragana"].test(ato.substr(ato_word.length)))
          str += RegExp.lastMatch;
      } else {
        return "";
      }
    }
   
    return str;
  },
 
  log: function() {
    Application.console.log("[contextSearcher] " + Array.slice(arguments));
  }
}

window.contextSearcher.init();

или установить

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EcontextSearcher%20%280.0.7%20-%202012-12-22%29%20mod%200.0.1%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADf0lEQVR42oWTe1DTBQDHfz1wjAnIbsogQDreiOOhTDZ0/CDd0NGKjR26JY7XUJFwByFBtRxybpBNmAtWyqCRDyRRMSDyEa9ouCmeYJACgokS0cPuuus6/Obtj/6wvL7/f773vft+vwTxtDgqqmtCUSYt7s2OJSEZA85RSgtljVJIkOSLxP/JlafKdueXP1yrOAJ9cx+6r82g1TqFXM0puIRm3KYEpaU8E6aysmrcyFJs1nVhcOo3WO8+Qu+tBfTc/AmX7HM4ZLGBEiRfpAWLi/4Fuye/k8eQH4bfW+dQN/AAl+78juP9czB+MQ2pohSfGk7gqyuj4CelQZarWVweniZ9gj3ngBnRIu/9J3sXqi8Mw9h3DxbbHK5O/opu6xzquqbQqNVgQe6JB8VsDGXxYNbp4cTgTZC7zUyHAUucr2/ssmJVXg3Wqo6h6uRlfD89D/t3sxiffYSj5maMpjExsjMakztewgUOAy94rH/sy87c5kjhGZv6bcfQGCw9o2i6eA3Fuga0tPehsbUXx9quw9R0HoP9/RgvEWAseSnaY5zh5LMR9HCRiSP9kEq4+CXa3ZMLwZAfwgqFAS4xOVgSIAUlIB00dgVeEW7D52c6UF1RgY9LClBZVA7CPxluLwva18sOehAugdKzHmItmAWf4Q0WE2T6fmRzExAZJcGy+CrsigzARb4PbKlM+IZL4cxWgPDlg+6/6YzDwDMqu5ASloUs7XHY3n4dM6Jl+EHkhtbW8/AT18EqD8Qf2+n4UeiBJs1BlFWaQHgL4BP62pF1crUbQW7V+1MDZT+rq824esIImzgM43kkrIND4JZ9iZZ6E8YKeZi2GHBnYhLDVzohJNN/Wb1BuZdUmJ2JzQW1FC/2zgPqD47Cbr+B4eJ0jBg1GLDfAqnuRnvnN7hbtgU3TplxWyvGfYkXdvNTvmaL3hMShPp5R5U8WVVQc/me+YlX3TEiWIoxIR1dZzvB2deGxsMfYSZzJYYSvWGLpuE0N/hP9sa95UnK2oB/lpgQv2XT+6rSWSN39V/1ET6LbXkS1GtrEbnVCIPOgJ6UUJzOkTxu/qRhcZ/aOJ+QoeeQavXT53JlRCTlcmMEhXtC4pQNgez8gfD4kpvBkcrrIawdnRFxOTWsxPxdseJ3Y9coTU7PPJVU1UJ9MhA6V3ZgJS9VFxYv0a7aIK70Ym2vpv0X+DcyFcVExBytpgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20https%3A//github.com/Griever/userChromeJS/blob/master/contextSearcher.uc.js%0A//%20http%3A//forum.mozilla-russia.org/viewtopic.php%3Fid%3D52666%0A%0A//%20contextSearcher%20button%20for%20Custom%20Buttons%0A//%20%28code%20for%20%22initialization%22%20section%29%0A%0A//%20%28c%29%20Griever%20%28bunda1%29%0A//%20version%200.0.7%202012-12-22%0A%0A//%20mod%200.0.1%202013-02-19%20%282k1dmg%29%20%0A%0Aif%20%28window.contextSearcher%29%20%7B%0A%20%20window.contextSearcher.destroy%28%29%3B%0A%20%20delete%20window.contextSearcher%3B%0A%7D%0A%0Awindow.contextSearcher%20%3D%20%7B%0A%20%20NEW_TAB%3A%20true%2C%0A%0A%20%20_regexp%3A%20%7B%0A%20%20%20%20hiragana%3A%20%22%5B%5C%5Cu3040-%5C%5Cu309F%5D+%22%2C%0A%20%20%20%20katakana%3A%20%22%5B%5C%5Cu30A0-%5C%5Cu30FA%5C%5Cu30FC%5D+%22%2C%0A%20%20%20%20kanji%20%20%20%3A%20%22%5B%5C%5Cu4E00-%5C%5Cu9FA0%5D+%22%2C%0A%20%20%20%20suuji%20%20%20%3A%20%22%5B0-9_./%2C%25-%5D+%22%2C%0A%20%20%20%20eisu_han%3A%20%22%5C%5Cw%5B%5C%5Cw%5C%5C-%5D*%22%2C%0A%20%20%20%20eisu_zen%3A%20%22%5B%5C%5CuFF41-%5C%5CuFF5A%5C%5CuFF21-%5C%5CuFF3A%5C%5CuFF10-%5C%5CuFF19%5D+%22%2C%0A%20%20%20%20hankaku%20%3A%20%22%5B%5C%5CuFF00-%5C%5CuFFEF%5D+%22%2C%0A%20%20%20%20hangul%20%20%3A%20%22%5B%5C%5Cu1100-%5C%5Cu11FF%5C%5CuAC00-%5C%5CuD7AF%5C%5Cu3130-%5C%5Cu318F%5D+%22%2C%0A%20%20%7D%2C%0A%0A%20%20get%20startReg%28%29%20%7B%0A%20%20%20%20let%20reg%20%3D%20%7B%7D%3B%0A%20%20%20%20for%28let%20n%20in%20this._regexp%29%20%7B%0A%20%20%20%20%20%20reg%5Bn%5D%20%3D%20new%20RegExp%28%27%5E%27%20+%20this._regexp%5Bn%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20delete%20this.startReg%3B%0A%20%20%20%20return%20this.startReg%20%3D%20reg%3B%0A%20%20%7D%2C%0A%20%20get%20endReg%28%29%20%7B%0A%20%20%20%20let%20reg%20%3D%20%7B%7D%3B%0A%20%20%20%20for%28let%20n%20in%20this._regexp%29%20%7B%0A%20%20%20%20%20%20reg%5Bn%5D%20%3D%20new%20RegExp%28this._regexp%5Bn%5D%20+%20%27%24%27%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20delete%20this.endReg%3B%0A%20%20%20%20return%20this.endReg%20%3D%20reg%3B%0A%20%20%7D%2C%0A%20%20getCharType%3A%20function%28aChar%29%20%7B%0A%20%20%20%20var%20c%20%3D%20aChar.charCodeAt%280%29%3B%0A%20%20%20%20//if%20%28c%20%3E%3D%200x30%20%26%26%20c%20%3C%3D%200x39%29%20return%20%22suuji%22%3B%0A%20%20%20%20if%20%28c%20%3E%3D%200x30%20%26%26%20c%20%3C%3D%200x39%20%7C%7C%20c%20%3E%3D%200x41%20%26%26%20c%20%3C%3D%200x5A%20%7C%7C%20c%20%3E%3D%200x61%20%26%26%20c%20%3C%3D%200x7A%20%7C%7C%20c%20%3D%3D%3D%200x5F%29%20return%20%22eisu_han%22%3B%0A%20%20%20%20if%20%28c%20%3E%3D%200x30A0%20%26%26%20c%20%3C%3D%200x30FA%20%7C%7C%20c%20%3D%3D%3D%200x30FC%29%20return%20%22katakana%22%3B%0A%20%20%20%20if%20%28c%20%3E%3D%200x3040%20%26%26%20c%20%3C%3D%200x309F%29%20return%20%22hiragana%22%3B%0A%20%20%20%20if%20%28c%20%3E%3D%200x4E00%20%26%26%20c%20%3C%3D%200x9FA0%29%20return%20%22kanji%22%3B%0A%20%20%20%20if%20%28c%20%3E%3D%200xFF41%20%26%26%20c%20%3C%3D%200x9F5A%20%7C%7C%20c%20%3E%3D%200xFF21%20%26%26%20c%20%3C%3D%200xFF3A%20%7C%7C%20c%20%3E%3D%200xFF10%20%26%26%20c%20%3C%3D%200xFF19%29%20return%20%22eisu_zen%22%3B%0A%20%20%20%20if%20%28c%20%3E%3D%200xFF00%20%26%26%20c%20%3C%3D%200xFFEF%29%20return%20%22hankaku%22%3B%0A%20%20%20%20if%20%28c%20%3E%3D%200x1100%20%26%26%20c%20%3C%3D%200x11FF%20%7C%7C%20c%20%3E%3D%200xAC00%20%26%26%20c%20%3C%3D%200xD7AF%20%7C%7C%20c%20%3E%3D%200x3130%20%26%26%20c%20%3C%3D%200x318F%29%20return%20%22hangul%22%3B%0A%20%20%20%20return%20%22%22%3B%0A%20%20%7D%2C%0A%0A%20%20searchText%3A%20%27%27%2C%0A%20%20searchEngines%3A%20%5B%5D%2C%0A%20%20init%3A%20function%28%29%7B%0A%20%20%20%20this.isMac%20%3D%20navigator.platform.indexOf%28%22Mac%22%29%20%3D%3D%200%3B%0A%20%20%20%20this.searchService%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20this.context%20%3D%20document.getElementById%28%27contentAreaContextMenu%27%29%3B%0A%20%20%20%20var%20searchselect%20%3D%20document.getElementById%28%27context-searchselect%27%29%3B%0A%20%20%20%20searchselect.style.display%20%3D%20%27none%27%3B%0A%0A%20%20%20%20this.menu%20%3D%20this.context.insertBefore%28document.createElement%28%27menu%27%29%2C%20searchselect%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27id%27%2C%20%27context-searcher%27%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27class%27%2C%20%27menu-iconic%27%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27accesskey%27%2C%20searchselect.accessKey%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27onclick%27%2C%20%27if%20%28event.target%20%3D%3D%20this%29%20%7B%20contextSearcher.command%28event%29%3B%20closeMenus%28this%29%3B%20%7D%27%29%3B%0A%0A%20%20%20%20this.popup%20%3D%20this.menu.appendChild%28%20document.createElement%28%27menupopup%27%29%20%29%3B%0A%0A%20%20%20%20this.context.addEventListener%28%27popupshowing%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20this.menu.addEventListener%28%27DOMMouseScroll%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.mPanelContainer.addEventListener%28this.isMac%20%3F%20%27mousedown%27%20%3A%20%27click%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20window.addEventListener%28%27unload%27%2C%20this%2C%20false%29%3B%0A%20%20%7D%2C%0A%0A%20%20uninit%3A%20function%28%29%20%7B%0A%20%20%20%20this.context.removeEventListener%28%27popupshowing%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20this.menu.removeEventListener%28%27DOMMouseScroll%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.mPanelContainer.removeEventListener%28%27click%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.mPanelContainer.removeEventListener%28%27mousedown%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20window.removeEventListener%28%27unload%27%2C%20this%2C%20false%29%3B%0A%20%20%7D%2C%0A%0A%20%20destroy%3A%20function%28%29%7B%0A%20%20%20%20this.uninit%28%29%3B%0A%20%20%20%20document.getElementById%28%27context-searchselect%27%29.style.removeProperty%28%27display%27%29%3B%0A%20%20%20%20var%20m%20%3D%20document.getElementById%28%27context-searcher%27%29%3B%0A%20%20%20%20if%20%28m%29%0A%20%20%20%20%20%20m.parentNode.removeChild%28m%29%3B%0A%20%20%7D%2C%0A%0A%20%20handleEvent%3A%20function%28event%29%20%7B%0A%20%20%20%20if%20%28this%5Bevent.type%5D%29%0A%20%20%20%20%20%20this%5Bevent.type%5D%28event%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20unload%3A%20function%28e%29%7B%0A%20%20%20%20this.uninit%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20DOMMouseScroll%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28this.searchEngines.length%20%3D%3D%3D%200%29%0A%20%20%20%20%20%20this.searchEngines%20%3D%20this.searchService.getVisibleEngines%28%7B%7D%29%3B%0A%20%20%20%20if%20%28%21this.searchEngines%20%7C%7C%20this.searchEngines.length%20%3D%3D%200%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%0A%20%20%20%20var%20index%20%3D%20this.searchEngines.indexOf%28this.searchService.currentEngine%29%3B%0A//%20%20%20%20var%20newEngine%20%3D%20e.detail%20%3E%200%3F%0A//%20%20%20%20%20%20this.searchEngines%5Bindex+1%5D%20%7C%7C%20this.searchEngines%5B0%5D%3A%0A//%20%20%20%20%20%20this.searchEngines%5Bindex-1%5D%20%7C%7C%20this.searchEngines%5Bthis.searchEngines.length%20-1%5D%3B%0A%20%20%20%20var%20newEngine%20%3D%20e.detail%20%3E%200%3F%20this.searchEngines%5Bindex+1%5D%20%3A%20this.searchEngines%5Bindex-1%5D%3B%0A%20%20%20%20if%20%28%21newEngine%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.searchService.currentEngine%20%3D%20newEngine%3B%0A%20%20%20%20this.setMenuitem%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20command%3A%20function%28e%29%7B%0A%20%20%20%20var%20target%20%3D%20e.target%3B%0A%20%20%20%20var%20engine%20%3D%20e.target.engine%20%7C%7C%20this.menu.engine%3B%0A%0A%20%20%20%20var%20submission%20%3D%20engine.getSubmission%28this.searchText%2C%20null%29%3B%0A%20%20%20%20if%20%28%21submission%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20//%20mod%200.0.1%0A%20%20//var%20newtab%20%3D%20this.NEW_TAB%20%7C%7C%20e.button%20%3D%3D%3D%201%20%7C%7C%20e.shiftKey%20%7C%7C%20e.ctrlKey%3B%0A%20%20%20//%20if%20%28%21newtab%29%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.metaKey%20%26%26%20%21e.altKey%20%29%20%7B%20%0A%20%20%20%20%20%20//loadURI%28submission.uri.spec%2C%20null%2C%20submission.postData%2C%20false%29%3B%0A%20%20%20%20%20%09%09gBrowser.addTab%28submission.uri.spec%2C%20%7B%0A%20%20%20%20%20%20%20%20%09postData%3A%20submission.postData%2C%0A%20%20%20%20%20%20%20%20%09ownerTab%3A%20gBrowser.mCurrentTab%2C%0A%20%20%20%20%20%20%20%20%09relatedToCurrent%3A%20true%0A%20%20%20%20%20%20%09%7D%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28submission.uri.spec%2C%20%7B%0A%20%20%20%20%20%20%20%20postData%3A%20submission.postData%2C%0A%20%20%20%20%20%20%20%20ownerTab%3A%20gBrowser.mCurrentTab%2C%0A%20%20%20%20%20%20%20%20relatedToCurrent%3A%20true%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20click%3A%20function%28event%29%20%7B%0A%20%20%20%20if%20%28event.button%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20this._clickNode%20%3D%20event.rangeParent%3B%0A%20%20%20%20%20%20this._clickOffset%20%3D%20event.rangeOffset%3B%0A%20%20%20%20%20%20this._clientX%20%3D%20event.clientX%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20this._clickNode%20%3D%20null%3B%0A%20%20%20%20%20%20this._clickOffset%20%3D%200%3B%0A%20%20%20%20%20%20this._clientX%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20mousedown%3A%20function%28event%29%20%7B%0A%20%20%20%20this.click%28event%29%3B%0A%20%20%7D%2C%0A%0A%20%20setMenuitem%3A%20function%28%29%20%7B%0A%20%20%20%20var%20currentEngine%20%3D%20this.searchService.currentEngine%3B%0A%20%20%20%20var%20l%20%3D%20this.searchText.length%20%3E%2016%3F%20this.searchText.substr%280%2C%2016%29%20+%20%27...%27%20%3A%20this.searchText%3B%0A%20%20%20%20this.menu.engine%20%3D%20currentEngine%3B%0A%20%20%20%20//this.menu.setAttribute%28%27label%27%2C%20gNavigatorBundle.getFormattedString%28%22contextMenuSearchText%22%2C%20%5BcurrentEngine.name%2C%20l%5D%29%29%3B%0A%20%20%20%20//this.menu.setAttribute%28%27label%27%2C%20%27%22%27%20+%20l%20+%20%27%22%20%5Cu3092%5Cu691c%5Cu7d22%27%29%3B%0A%20%20%20%20//this.menu.setAttribute%28%27label%27%2C%27%u0418%u0441%u043A%u0430%u0442%u044C%20%27%20+%20%27%22%27%20+%20l%20+%20%27%22%27%29%3B%0A%20%20%20%20//%20mod%200.0.1%0A%20%20%20%20try%20%7B%0A%20%20%20%20%09this.menu.setAttribute%28%27label%27%2C%20gNavigatorBundle.getFormattedString%28%22contextMenuSearch%22%2C%20%5BcurrentEngine.name%2C%20l%5D%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%09this.menu.setAttribute%28%27label%27%2C%20gNavigatorBundle.getFormattedString%28%22contextMenuSearchText%22%2C%20%5BcurrentEngine.name%2C%20l%5D%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20this.menu.setAttribute%28%27tooltiptext%27%2C%20currentEngine.name%29%3B%0A%20%20%20%20if%20%28currentEngine.iconURI%29%0A%20%20%20%20%20%20this.menu.style.listStyleImage%20%3D%20%27url%28%22%27%20+%20currentEngine.iconURI.spec%20+%20%27%22%29%27%3B%0A%20%20%20%20else%20%0A%20%20%20%20%20%20this.menu.style.removeProperty%28%27list-style-image%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20popupshowing%3A%20function%28e%29%7B%0A%20%20%20%20if%20%28e.target%20%21%3D%20this.context%29%20return%3B%0A%0A%20%20%20%20this.searchText%20%3D%20%0A%20%20%20%20%20%20gContextMenu.isTextSelected%3F%20this.getBrowserSelection%28%29%20%3A%0A%20%20%20%20%20%20gContextMenu.onImage%3F%20gContextMenu.target.getAttribute%28%27alt%27%29%20%3A%0A%20%20%20%20%20%20//gContextMenu.onLink%3F%20gContextMenu.linkText%28%29%20%3A%0A%20%20%20%20%20%20gContextMenu.onTextInput%3F%20this.getTextInputSelection%28%29%20%3A%0A%20%20%20%20%20%20this.getCursorPositionText%28%29%3B%0A%0A%20%20%20%20if%20%28%21this.searchText%20%7C%7C%20%21/%5CS/.test%28this.searchText%29%29%20%7B%0A%20%20%20%20%20%20this.menu.hidden%20%3D%20true%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28this.searchText.length%20%3E%20256%29%0A%20%20%20%20%20%20this.searchText%20%3D%20this.searchText.substr%280%2C%20256%29%3B%0A%20%20%20%20this.menu.hidden%20%3D%20false%3B%0A%20%20%20%20%0A%20%20%20%20if%20%28%21this.popup.hasChildNodes%28%29%20%7C%7C%20e.ctrlKey%29%0A%20%20%20%20%20%20this.createMenuitem%28%29%3B%0A%20%20%20%20%0A%20%20%20%20this.setMenuitem%28%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20createMenuitem%3A%20function%28%29%7B%0A%20%20%20%20this.searchEngines%20%3D%20this.searchService.getVisibleEngines%28%7B%7D%29%3B%0A%20%20%20%20if%20%28%21this.searchEngines%20%7C%7C%20this.searchEngines.length%20%3D%3D%200%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20var%20f%3B%0A%20%20%20%20while%20%28f%20%3D%20this.popup.firstChild%29%20%7B%0A%20%20%20%20%20%20this.popup.removeChild%28f%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20this.menu.engine%20%3D%20this.searchService.currentEngine%3B%0A%20%20%20%20if%20%28this.menu.engine.iconURI%29%0A%20%20%20%20%20%20this.menu.style.listStyleImage%20%3D%20%27url%28%22%27%20+%20this.menu.engine.iconURI.spec%20+%20%27%22%29%27%3B%0A%20%20%20%20else%20%0A%20%20%20%20%20%20this.menu.style.removeProperty%28%27list-style-image%27%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20s%20%3D%20this.searchEngines%2C%20l%20%3D%20s.length%3B%20i%20%3C%20l%3B%20i++%29%20%7B%0A%20%20%20%20%20%20var%20engine%20%3D%20s%5Bi%5D%3B%0A%20%20%20%20%20%20var%20m%20%3D%20document.createElement%28%27menuitem%27%29%3B%0A%20%20%20%20%20%20m.setAttribute%28%27label%27%2C%20engine.name%29%3B%0A%20%20%20%20%20%20m.setAttribute%28%27class%27%2C%20%27menuitem-iconic%20bookmark-item%27%29%3B%0A%20%20%20%20%20%20if%20%28engine.iconURI%29%20%7B%0A%20%20%20%20%20%20%20%20m.setAttribute%28%27image%27%2C%20engine.iconURI.spec%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20m.setAttribute%28%27oncommand%27%2C%20%27contextSearcher.command%28event%29%3B%27%29%3B%0A%20%20%20%20%20%20m.setAttribute%28%27onclick%27%2C%20%27checkForMiddleClick%28this%2C%20event%29%3B%27%29%3B%0A%20%20%20%20%20%20m.engine%20%3D%20engine%3B%0A%20%20%20%20%20%20this.popup.appendChild%28m%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20%0A%20%20getBrowserSelection%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20win%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20var%20sel%20%3D%20win.getSelection%28%29%3B%0A%20%20%20%20var%20str%20%3D%20%27%27%3B%0A%20%20%20%20if%20%28sel.isCollapsed%29%0A%20%20%20%20%20%20return%20str%3B%0A%0A%20%20%20%20for%28var%20i%20%3D%200%2C%20l%20%3D%20sel.rangeCount%3B%20i%20%3C%20l%3B%20i++%29%20%7B%0A%20%20%20%20%20%20str%20+%3D%20sel.getRangeAt%28i%29%20+%20%27%20%27%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20str.replace%28/%5E%5Cs*%7C%5Cs*%24/g%2C%20%27%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20getTextInputSelection%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20elem%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20var%20str%20%3D%20elem.value.slice%28elem.selectionStart%2C%20elem.selectionEnd%29%3B%0A%20%20%20%20return%20str.replace%28/%5E%5Cs*%7C%5Cs*%24/g%2C%20%27%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20getCursorPositionText%3A%20function%28%29%20%7B%0A%20%20%20%20var%20node%20%3D%20this._clickNode%3B%0A%20%20%20%20var%20offset%20%3D%20this._clickOffset%3B%0A%20%20%20%20if%20%28%21node%20%7C%7C%20node.nodeType%20%21%3D%3D%20Node.TEXT_NODE%29%0A%20%20%20%20%20%20return%20%22%22%3B%0A%0A%20%20%20%20var%20text%20%3D%20node.nodeValue%3B%0A%0A%20%20%20%20//%20%u6587%u5B57%u306E%u53F3%u534A%u5206%u3092%u30AF%u30EA%u30C3%u30AF%u6642%u306B%u6B21%u306E%u6587%u5B57%u3092%u53D6%u5F97%u3059%u308B%u5BFE%u7B56%0A%20%20%20%20var%20range%20%3D%20node.ownerDocument.createRange%28%29%3B%0A%20%20%20%20range.setStart%28node%2C%20offset%29%3B%0A%20%20%20%20var%20rect%20%3D%20range.getBoundingClientRect%28%29%3B%0A%20%20%20%20range.detach%28%29%3B%0A%20%20%20%20if%20%28rect.left%20%3E%3D%20this._clientX%29%0A%20%20%20%20%20%20offset--%3B%0A%0A%20%20%20%20if%20%28%21text%5Boffset%5D%29%20return%20%22%22%3B%0A%20%20%20%20var%20type%20%3D%20this.getCharType%28text%5Boffset%5D%29%3B%0A%20%20%20%20if%20%28%21type%29%20return%20%22%22%3B%0A%0A%20%20%20%20var%20mae%20%3D%20text.substr%280%2C%20offset%29%3B%0A%20%20%20%20var%20ato%20%3D%20text.substr%28offset%29%3B%20//%20text%5Boffset%5D%20%u306F%u3053%u3063%u3061%u306B%u542B%u307E%u308C%u308B%0A%20%20%20%20var%20ato_word%20%3D%20%28this.startReg%5Btype%5D.exec%28ato%29%20%7C%7C%20%5B%22%22%5D%29%5B0%5D%3B%0A%20%20%20%20var%20str%20%3D%20this.endReg%5Btype%5D.test%28mae%29%20%3F%20RegExp.lastMatch%20+%20ato_word%20%3A%20ato_word%3B%0A%0A%20%20%20%20if%20%28str.length%20%3D%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20if%20%28type%20%3D%3D%3D%20%22kanji%22%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28this.startReg%5B%22hiragana%22%5D.test%28ato.substr%28ato_word.length%29%29%29%0A%20%20%20%20%20%20%20%20%20%20str%20+%3D%20RegExp.lastMatch%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20return%20str%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20log%3A%20function%28%29%20%7B%0A%20%20%20%20Application.console.log%28%22%5BcontextSearcher%5D%20%22%20+%20Array.slice%28arguments%29%29%3B%0A%20%20%7D%0A%7D%0A%0Awindow.contextSearcher.init%28%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

но вот это добавление что Вы давали чтобы привязать окно поисковиков на ней не срабатывает

скрытый текст
Попробуй после
this.popup = this.menu.appendChild(document.createElement('menupopup'));

дописать
this.popup.setAttribute("position", "start_before");

скрытый текст
http://s018.radikal.ru/i515/1302/d5/c85d4b0980d8.jpg

можно в этой кнопке что нибудь сделать, и еще, как в ней можно выставить задержку появления окна с поисковиками.

Отредактировано villa7 (24-02-2013 12:46:05)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№597324-02-2013 15:54:05

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 980
UA: Firefox 10.0

Re: Custom Buttons

villa7

Может и сойдёт...

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

Выделить код

Код:

var delay = 500;
this.popup.setAttribute("position", "after_end");
this.popup.setAttribute("onpopupshowing", "if (!this.parentNode.f) event.preventDefault(); setTimeout(function() { var cs = document.getElementById('context-searcher'); if (!cs.hasAttribute('_moz-menuactive')) return; cs.f = true; cs.open = true; cs.f = false; }, " + delay + ");");

Отсутствует

 

№597424-02-2013 16:14:25

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: unknown 0.0

Re: Custom Buttons

Dumby
Это не может и сойдет, это то что нужно, спасибо большое.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№597524-02-2013 21:37:33

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: unknown 0.0

Re: Custom Buttons

Dumby
Вроде поторопился, в процессе юзания появилась проблемка, по горизонтали привязалось как надо, а вот по вертикали начало уходить вверх.
Раньше было так, окно всегда начиналось с низа.

скрытый текст
http://i051.radikal.ru/1302/ce/dce17eb4629f.jpg

Теперь стало так, далеко стало тянуться к поисковикам. не совсем удобно.
скрытый текст
http://s42.radikal.ru/i096/1302/3e/437e048412de.jpg

Может можно как поправить, или это уже никак.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

Board footer

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