кто поможет написать подобное с 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);
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
2k1dmg
или мой вариант
В Вашем варианте не получается настроить постоянное местонахождение окна поисковиков, как было в другой кнопке, замена кода не помогает, окно поисковиков появляется в разных местах, будем ждать. Спасибо. А может подскажите как сделать как на картинке ниже.
Отредактировано villa7 (19-02-2013 20:16:52)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
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); } };
На форуме
bunda1 У меня вот такой вопрос - раньше при старом меню был такой код при наведении мышкой на кнопку - меню раскрывалось:
Оно не старое и прекрасно работает на FF19 но для Nightly уже требует конвертации Конвертирование старых кнопок с XML (E4X)
Просто мне больше нравится с array = [ { label:
А что бы при наведении мышкой на кнопку меню раскрывалось:
this.onmouseover = function() { menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); };
Есть и другие варианты такого меню с тем же:
Отсутствует
ну вот поясни как этим пользоваться?
А что это я должен документацию за кого-то читать?
Не уверен, что получившаяся функция будет удобна для использования.
И возможны варианты...
Суть примерно такая:
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
С файлами, правда, сложнее.
Там в примере только
То есть файл берется из <input type="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)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Как же так, а по конкретней можно. menupopup что тоже дублируетса ?
Ну, я ничего полохого сказать не хотел ,
просто иногда на меня находит... , не обращай внимания
// Создать меню .......................................................................................... /* 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,
проматываем вниз, а там - вот они:
Кстати, поскольку скриншот именно после «Настроить...» > «Готово»,
те menupopup, которые между ними - это такие-же дубликаты, но только от кнопки Save+
Отредактировано Dumby (21-02-2013 16:37:00)
Отсутствует
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; }
Мой код превращает этот стиль в это:
Добавлено 21-02-2013 21:04:45
Может если есть у тебя время посмотри что можно с этим сделать
Отредактировано bunda1 (21-02-2013 21:18:54)
Отсутствует
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)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Спасибо, ну тогда вопросы насчет удаления и конвертации стиля отпадает для Сегодня 20:02:49. Ведь если подключить сразу файл то и конвертировать ненадо и так все работает.
Отредактировано bunda1 (21-02-2013 22:37:11)
Отсутствует
bunda1
Разве что могут быть проблемы с кэшированием.
Тогда можно делать ".../userChrome.css?" + Date.now() , например.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
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
bunda1
Разве что могут быть проблемы с кэшированием.
Тогда можно делать ".../userChrome.css?" + Date.now() , например.
Я не понял, а поконкретней можно ?
Отредактировано bunda1 (21-02-2013 23:28:28)
Отсутствует
Я не понял, а поконкретней можно ?
Сначала проверить надо, может, и не кэширует.
А так это простой способ заставить приложение перечитать файл по ссылке.
Ну, как-то так:
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() нужно будет хранить эту ссылку.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
voqabuhe пишетbunda1
Как с этой проблемой №6589?Я работаю над этой проблемой.
Странно, а на английской версии 22.0а1 эта проблема исчезла.
Отредактировано voqabuhe (22-02-2013 13:40:03)
Отсутствует
Всем привет!
получилось заставить "кнопку затемнения" затемнять на всех сайтах, а видео "не трогать"
?
Нет.
Добавлено 22-02-2013 19:15:57
ща ещё подрихтую и получится отличный инструмент и что самое главное без всякой инициализации!
Кстати, можно заменить USER_SHEET на AGENT_SHEET и тогда будут работать стили которые не работают в userContent.css и userChrome.css, например удаление скроллбара.
Добавлено 22-02-2013 19:18:39
Странно, а на английской версии 22.0а1 эта проблема исчезла.
Это радует а то я уже собрался переписывать этот код. Может само рассосется.
Отредактировано bunda1 (22-02-2013 19:18:39)
Отсутствует
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);
Отсутствует
может проще через стили?
К сожалению не работает.
Добавлено 24-02-2013 01:05:24
Я про мигалку для Autocopy+3.
Иногда мигает совсем незаметно, например если выделять что-то вроде этого.
Разыскал некий альтернативный вариант, но незнаю, стоит ли такое городить
Большое спасибо но мне кажется что старый вариант лучше, извини
И на http://ompldr.org/vaGtiMg/gray.html очень наглядно мигает.
Отредактировано bunda1 (24-02-2013 01:05:24)
Отсутствует
Хотел обновиться, да не тут то было. В 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()
Отсутствует
старый вариант лучше, извини
Нет так нет, разумеется ни на чём не настаиваю
И на http://ompldr.org/vaGtiMg/gray.html очень наглядно мигает.
а вот на моей лисе почти не мигает, попробую показать как это у меня выглядит:
Отсутствует
Dumby
По гуглил, и оказалось что про кнопки негде больше спросить как здесь. На 19 перестала работать Context Search, но работает вот эта
// 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.setAttribute("position", "start_before");
Отредактировано villa7 (24-02-2013 12:46:05)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
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 + ");");
Отсутствует
Dumby
Вроде поторопился, в процессе юзания появилась проблемка, по горизонтали привязалось как надо, а вот по вертикали начало уходить вверх.
Раньше было так, окно всегда начиналось с низа.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует