Я спрашивал про разный стиль текста в одной подсказке - Заголовок bold, затем обычный шрифт, или одно слово другим цветом, затем обычный шрифт.
Пример, на скорую руку:
this.onmouseover =()=> { self.tooltipText = ""; var tooltip = self.appendChild(document.createElement("tooltip")); tooltip.style.cssText = "-moz-box-orient: vertical;"; var image = tooltip.appendChild(document.createElement("image")); image.setAttribute("src", "https://forum.mozilla-russia.org/favicon.ico#-moz-resolution=16,16"); image.style.cssText = "width: 16px !important; height: 16px !important;"; var label = tooltip.appendChild(document.createElement("label")); label.setAttribute("value", "Demo1"); label.style.cssText = "color: blue !important; font-weight: bold !important; font-size: 14px !important;"; var label = tooltip.appendChild(document.createElement("label")); label.setAttribute("value", "Demo2"); label.style.cssText = "color: red !important; font-size: 24px !important;"; tooltip.showPopup(self, -1, -1, "popup", "topleft", "topright"); self.onmouseleave =()=> { tooltip.hidePopup(self.onmouseleave = null); self.removeChild(tooltip) }; };
Отсутствует
Кнопка делает жирным текст названия вкладки если она добавлена в закладки.
Помогите пожалуйста сделать, чтобы вместо выделение жирным названия вкладки выделялся текст в адресной строке.
Отредактировано Stkvsky (23-04-2019 15:27:08)
Отсутствует
Я изменяю строку
на
Но ничего не меняется, подскажите что не так я делаю?
Отсутствует
В общем к кнопке что выше нужно еще добавить этот стиль:
#TabsToolbar .tabbrowser-tab[inbookmarks] { border-top:solid 3px orchid !important; }
И над вкладками которые добавлены в закладки будет полоска указаного цвета.
Отсутствует
Я тут на три недели угодил в больницу (теперь хожу на костылях ).
Таким образом слегка выпал из актуальности, прошу извинить, если обсуждалось.
Вобщем, поставил Nightly 61.0a1 (2018-03-16) и Custom Buttons не работает.
Консоль пишет, что this.__defineGetter__ is not a function
CB 0.0.5.8.9.6pre2, настройка jsloader.shareGlobal в дефолтном значении true
Изменил в CustomButtonsService.js примерно как здесь, и заработало.
//this. __defineGetter__ ( // Not available at startup (this. __defineGetter__ || __defineGetter__). call ( // Not available at startup this,
Ну, и, собственно вопрос:
подтверждается ли это, и если да, то правильно ли сделал,
и выкладывалась ли где-то обновлённая версия?
На 59 кнопки можно заставить работать или это всё?
Если вдруг они работать должны — дайте пожалуйста ссылочку на аддончик.
Firefox без CB уныл и грустен.
Спасибо.
Странный вопрос. Смотря какие кнопки. Установил FQ 59.0.1
Поставил CB 0.0.5.8.9.6pre2 (custom_buttons-0.0.5.8.9-fixed7.1.xpi) отсюда.
Код инициализации кнопок исполняется, код для нажатия тоже.
Так что да, «работать должны», если сам код кнопки годен для 59-й версии.
Отсутствует
Dumby простые кнопки работают, но надолго ли? Возьмите другие иностранные форумы, все застыли на F57. Да же на на нашем форуме, посмотрите у главных разработчиков - какие версии Firefox. У меня стоит примерно около 30 - 40 кодов. На новых версиях Firefox, начиная с 56 у меня отваливаются процентов 20. Я просто не успеваю за всеми "новыми приколами" разработчиков, да и времени на это нету. А смысл бороться дальше, если все что связано с CB, выпилят в ближайших версиях. Все браузеры скоро будут однояйцовыми.
Извините за офтоп, это крик души.
Отсутствует
Странный вопрос. Смотря какие кнопки.
Виноват. По кнопками имел в виду "Custom Buttons", что в переводе означает кастомные кнопки.
Спасибо за ссылочки. Абсолютное большинство заработало.
Дело в том, что при применении профиля от 58 кнопок не было, был список в about:addons, сами кнопки отсутствовали на панели и ни один код не работал.
Устанавливаться с custombutton:// не желали. Вводя код, устанавливались в "никуда", хотя видны были в about:addons, но значки на панели были размером в пару пикселей.
Удалил CB, установил заново custom_buttons-0.0.5.8.9-fixed7.1 (у меня он же и стоял до этого, но почему то другого размера, отличался на несколько десятков байт).
Кнопки начались устанавливаться. Перетащил со старого профиля buttonsoverlay.xul — всё стало в порядке, за исключением отдельных кнопок.
Отредактировано Coroner (17-03-2018 00:17:34)
Отсутствует
Я изменяю строку
на
Но ничего не меняется, подскажите что не так я делаю?
Этого недостаточно.
В коде атрибут inbookmarks присваивается именно табам, а не urlbar'у
Имхо, для табов это даже лучше - для урлбара можно так индицировать только активную вкладку (или же, что среди вкладок есть закладки), что имхо хуже
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
А смысл бороться дальше, если все что связано с CB, выпилят в ближайших версиях.
Лично для меня, надежда на то, что, возможно, есть вероятность,
что CB будет работать на ESR 60, вполне себе не лишена смысла.
А дальше... Ну это как если бы нечто небезразличное, но заведомо смертное.
Если ничего не делать, уйдёт в свои 57, а если делать, то может доживёт, например, до 63.
Вот такой вот, примерно, смысл.
Infocatcher
Разреши попросить прокомментировать нижеследующее
Это приводит к тому, что если в коде кнопки есть ошибка,
то ссылка на эту ошибку в консоли, зачастую, содержит неверный id (номер) кнопки,
и, соответственно, при клике на ссылку, на редактирование открывается другая кнопка.
Можно, конечно, распаковать вручную, и после нескольких перезапусков
с очисткой папки startupCache, всё становится как было.
Однако, как-то перепугавшись чего-то такого, пытался сочинить
свой страшненький CB-форк, типа фейковый bootstrap,
поэтому эта ситуация показалась мне знакомой.
Предположительно, неприятность возникает
из-за какого-то кэширования в нераспакованных расширениях.
Вобщем, изменил код в cbbutton.js, и, вроде,
стало нормально даже в нераспакованном виде.
buttonCbExecuteCode: function (event, oButton, code) { this. checkBind (); var execurl = "chrome://custombuttons-context/content/button.js?windowId="; execurl += this. cbService. getWindowId (document. documentURI) + "&id="; execurl += oButton. id + "@"; execurl += oButton. _initPhase? "init": "code"; var executionContext = {}; executionContext ["oButton"] = oButton; executionContext ["code"] = code; executionContext ["argNames"] = "event"; executionContext ["args"] = [event]; this. buildExecutionContext (oButton, execurl, executionContext); /* Components. classes ["@mozilla.org/moz/jssubscript-loader;1"]. getService (Components. interfaces. mozIJSSubScriptLoader). loadSubScript (execurl, executionContext); */ this. loadSubScript (execurl, executionContext); }, get loadSubScript() { delete this. loadSubScript; if ("Services" in window && parseInt (Services. appinfo. version) > 59) { return this. loadSubScript = function (execurl, executionContext) { Services. scriptloader. loadSubScriptWithOptions (execurl, { target: executionContext, ignoreCache: true }); } } else { var scriptloader = Components. classes ["@mozilla.org/moz/jssubscript-loader;1"]. getService (Components. interfaces. mozIJSSubScriptLoader); return this. loadSubScript = function (execurl, executionContext) { scriptloader. loadSubScript (execurl, executionContext); } } },
Отсутствует
Есть кнопка которая автоматически открывает скачаный файл указанного разрешения в новой вкладке.
А можно ли добовить чтобы именно эти файлы открывались в текущей вкладке, а не в новой?
Несмотря на browser.link.open_newwindow.override.external 1
// Автмоатическое открытие скачаного файла ............. ((id, bsp, view = bsp[id]) => { if (!view) { var exts = [".torrent", ".jpg", ".png", ".maff", ".html", ".htm"]; view = bsp[id] = {}; view.onDownloadChanged = download => download.succeeded && exts.some(ext => download.target.path.endsWith(ext)) && download.launch(); Downloads.getList(Downloads.ALL).then(l => (view.list = l).addView(view), Cu.reportError); } addDestructor(reason => reason[5] == "e" && delete bsp[id] && view.list && view.list.removeView(view)); })("DownloadsObserver1", Cu.import("resource://gre/modules/Downloads.jsm", {}));
Отредактировано Stkvsky (17-03-2018 21:27:56)
Отсутствует
Только установка spec так же используется и в overlay.js в трёх местах.
Угу. Наконец-то собрался... подправил и там.
А из nsILoadInfo удалили SEC_NORMAL
Как мне кажется, и так сойдет:
Components. interfaces. nsILoadInfo. SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL // Firefox 42+ // SEC_NORMAL removed in Firefox 60+: https://bugzilla.mozilla.org/show_bug.cgi?id=1283427 || Components. interfaces. nsILoadInfo. SEC_NORMAL,
Вобщем, изменил код в cbbutton.js, и, вроде,
стало нормально даже в нераспакованном виде.
Меня только беспокоит проверка версии. Но что-то сходу не придумалось простого (и синхронного) кода для обнаружения нераспакованности. Ну то есть и можно, конечно, но это как-то некрасиво. И заменил на platformVersion, SeaMonkey же тоже, наверное, сломают обновят аналогично.
Неподписанная: custom_buttons-0.0.5.8.9-fixed8.xpi
Подписанная: custom_buttons-0.0.5.8.9-fixed8-signed.xpi (не вижу особого смысла, но пусть будет)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
fixed8
Ура! Большое спасибо!
можно, конечно, но это как-то некрасиво
А так будет работать? Если да, то красиво ли это?
alert( Components. classes ["@mozilla.org/network/protocol;1?name=resource"]. getService (Components. interfaces. nsIResProtocolHandler). getSubstitution ("custombuttons-modules"). schemeIs ("jar") );
Отсутствует
А так будет работать? Если да, то красиво ли это?
О, занятно, мне нравится.
Я пока склоняюсь к
get ignoreScriptLoaderCache() { // To correctly detect button with error var ph = Components. classes ["@mozilla.org/network/protocol;1?name=resource"]. getService (Components. interfaces. nsIResProtocolHandler); delete this. ignoreScriptLoaderCache; return this. ignoreScriptLoaderCache = ph. hasSubstitution ("custombuttons-modules") && ph. getSubstitution ("custombuttons-modules"). schemeIs ("jar") && "loadSubScriptWithOptions" in this. scriptLoader; },
(в совсем старых версиях не зарегистрирован custombuttons-modules)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Как переинициализировать кнопку из себя?
А то бывает, в коде значение расползается по всяким menu.setAttribute('какой-то атрибут', значение) - так что легче просто переинициализировать кнопку, наверное, чем отлавливать везде для замены, что она там повписывала.
Отредактировано Small_Z (23-03-2018 12:23:44)
Отсутствует
Как переинициализировать кнопку из себя?
переинициализировать код инициализации:
var link = custombuttons.makeButtonLink("edit", _id); var param = custombuttons.cbService.getButtonParameters(link); var param = param.wrappedJSObject || param; var param.initCode = param.initCode; custombuttons.cbService.installButton(param);
Отсутствует
Ребята, помогите пожалуйста, если можно добавить, чтобы эта кнопка сохраняла вместе с сайтом и его фавиконку.
Save snapshot to html
https://forum.mozilla-russia.org/viewto … 88#p588588
UPD
Нашел замену кнопке.
https://addons.mozilla.org/ru/firefox/a … scrapbook/
Отредактировано Stkvsky (25-03-2018 02:20:28)
Отсутствует
({ PREF_ROOT: "autocopy", init: function() { cbu.isPref(this.PREF_ROOT, true); gPrefService.addObserver(this.PREF_ROOT, this, false); addDestructor(()=> gPrefService.removeObserver(this.PREF_ROOT, this)); if (!gPrefService.getBoolPref(this.PREF_ROOT)) return; this.setAutocopy(true); }, observe: function(subj, topic, data) { if (data == this.PREF_ROOT) this.setAutocopy(gPrefService.getBoolPref(data)); }, setAutocopy: function(set) { var method = set ? addEventListener : removeEventListener; for(var type of ["mousedown", "mouseup"]) method(type, this, false, gBrowser); }, handleEvent: function(e) { if (e.button || e.target instanceof Ci.nsIDOMNSEditableElement) return; var win = e.target.ownerDocument.defaultView; if (win.top != content) return; var sel = win.getSelection().toString(); if (e.type == "mousedown") {this.sel = sel; return;} if (!sel || sel == this.sel) return; goDoCommand("cmd_copy"); } }).init();
59.0.2, а может и с 59 перестала работать Autocopy
Отсутствует
Dumby огромная тебе благодарность! Я не видел, пропустил... и до сих пор мучился с расширением. Вчера наткнулся на твой ответ №1964 на мою просьбу - шшикарненько Сработало все отлично , с первого раза твоя магия. я мало что понял в этом способе записи, но буду пробовать его перевести на более человечий диалект, дабы понять
Совместил эту штуку с кнопкой bunda1 ( ) "защитить в кладку"(чтоб небыло перехода если клик на иконке "защиты") и "при закрытии переходить на ..." - получился шикардос, который мнооооголо лет никто не мог\не желал сделать.
Вот все три в одном месте:
// --------------------- Клик по активной - переход на пред. активную ------------------------------- // код Dumby ((trg, sortFunc, flag) => { addEventListener("mousedown", e => flag = e.target != gBrowser.selectedTab, true, trg); addEventListener("click", e => { let protTab = e.originalTarget.className.startsWith("tab-close-button"); if ( flag || e.button || protTab || e.ctrlKey || e.shiftKey || e.altKey || e.detail != 1 ) return; var tabs = [...(gBrowser.visibleTabs || gBrowser.tabs)]; var recentlyUsedTabs = tabs.sort(sortFunc); var tab = tabs[recentlyUsedTabs.indexOf(e.target) + 1]; if (tab) gBrowser.selectedTab = tab; }, false, trg); })(gBrowser.tabContainer, (tab1, tab2) => tab2.lastAccessed - tab1.lastAccessed);
// ------------------ Закрытие вкладки = переход на пред.посещенную ---------------------------------------- // код bunda1 + интронэты function tabCloseHandler(e) { var tab = e.target; if ( tab == gBrowser.mCurrentTab ) { if ( !gBrowser.visibleTabs.length ) gBrowser.addTab("about:blank"); else { var tabs = gBrowser.visibleTabs || gBrowser.tabs, recentlyUsedTabs = Array.sort(tabs, function(tab1, tab2) { return tab2.lastAccessed - tab1.lastAccessed }), tabl = tabs[recentlyUsedTabs.indexOf(gBrowser.selectedTab) + 1] || null; gBrowser.selectedTab = tabl; } } } addEventListener("TabClose", tabCloseHandler, true, gBrowser.tabContainer );
...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation
Отсутствует
Infocatcher
Ну вот, практически конец. Видимо return Ok();
Сделал так
Добавил в install.rdf <em:bootstrap>true</em:bootstrap>
Переименовал chrome.manifest в overlay.manifest
Добавил файл bootstrap.js
function startup(data, reason) { if (reason != APP_STARTUP) return; var manifestFile = data.installPath.clone(); manifestFile.append("overlay.manifest"); Components.manager .QueryInterface(Components.interfaces.nsIComponentRegistrar) .autoRegister(manifestFile); } function shutdown() {} function install() {} function uninstall() {}
Запаковал, установил, закрыл Nightly.
В профиле, в папке extensions, распаковал xpi-файл, а сам xpi-файл удалил.
Запустил Nightly.
Shift+F2 > restart --nocache
Custom Buttons снова работает.
Даже интересно, сколько дней продержится.
Отсутствует
Ребята! а реально починить? https://forum.mozilla-russia.org/viewtopic.php?pid=732517#p732517 - это крайнее что откопал на форуме. На 58 не работает. Открыть страницу в другом браузере из контекстного меню - ветка кнопки. Совсем не хочется ставить Python для Open With
з.ы. Отрицательные ответы тоже принимаются. На чистом профиле тоже не пашет и не сеет.
Отредактировано mssign (27-03-2018 21:20:51)
Отсутствует
Даже интересно, сколько дней продержится.
Неделю.
Ignoring unrecognized chrome manifest directive 'interfaces'.
и заменил всё типа
getService (Components. interfaces. cbI{CustomButtonsService, KeyMapService})
на
getService (Components. interfaces. nsISupports). wrappedJSObject
Таких мест немало: примерно 25 штук в 14 файлах.
И Custom Buttons опять работает, снова ожидая очередной подлянки.
Отсутствует
это крайнее что откопал на форуме. На 58 не работает
У меня эта на 58 работает
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%3EOpen%20With%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+/vAerq6gIAAAAAakJFdmxcXE1PZHxkUVdoXgAAAADt7e0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw8PAB5uXlAwAAAACBSUmA6GIw/4FES6490v7gM6Dk+mhqdFYAAAAA6urqAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/v7wHm5eUDAAAAAIZMTIX+cED//pph/4tQWLNS6f7fovv+/zuX2/Rtb3paAAAAAOrq6gMAAAAAAAAAAAAAAAAAAAAA5+fnAeDf3wMAAAAAjEtHhf5hO//+l2n5/45g/5ZXWrNO6P/hjf7//5v3/v88mdv1a214WQAAAADu7u4CAAAAAAAAAAAJAAEBzcrKAwAAAACQQzyF/ls6//92UPv/iGD8/4lf/55ZWbNN6v3hZ/f//4n5//yc9/7/N5jc9WFkb1kAAAAA6enpAunp6QEPAAIDAAAAAJIvJ4X+TC///00t+/9iQP7/eFP9/3tV/51ZVrRn7P/hXfL//1ny//6B+P/9lff+/yyV2PVNT1xZAAAAANXW1gIAAAAAjxYKgf6Edv//ZFH6/1E3/f9YOf7/aUf8/4Fh/6dUULJ26//glfL//23y//1l8//+fvj//JT3/v8dk/D1LTE/VgAAAAC1EwCT/p2d//6Hi/7/lpL//6qi//+vo///tKX9/8e0/79KQ7Z/8P/itPP//7P3//62/P//uP/+/8z/+f7l/vn/M6D+9gAFHGH+Rxq8/opp5v91VN//fF7h/31k4f9/aOH/gWrf/oBu6o9RTGZI1/6nmdz/7IPe/+CE4f/igeH/4njd/+J33v7gZcj+5wAfUGMACF1tAAZttgABYbMAAFK0BwVItBUPS7QeFk6zIBlQuUREUUM3azNnHYIewRtyH7UVaRu3D18XtwVSELcASBG3AEQTswEUAE0bS/3UJFT+/wAt5/4AMfH/ADLv/wg9//8zYf/9N2L+/wccU7cw1gXgSf8V/1f/Jv5n/zv/dv9N/4f/Yf+g/oH+R/4N/wcpAHMACCsYFUL+zhBA/v8ALeP5AjT//Q0+//00Xf/7NFr//wAbTbYw2ADgOP8K/0H/E/xZ/zD9b/9M/In+bflW/i7/DUMAfAAAAAAAAAAAAAgqGCVR/tUUQ/7/AC3f+wAx9v8PQP/9CTj//wAdTbc14QDiL/QA/zP/AP5B/xH+V/8t+0P+FP8NRQCBAAAAAAELAAIAAg4DAAAAAAAIKxg2Xv7UOmH+/wAu5PsAM/39AC3z/wAiTbdZ/xziPf8P/y/rAP04/wb7Pf4N/w9QAIEAAAAAAg0AAwkAAQEAAAAAAAINAwAAAAAACCoYTHD+1IWd/v9Jbf/5aYP//w1EfLdv/zjigv9n/3L/T/p6/ln/FGkAgQAAAAACDgAECQABAQAAAAAAAAAAAAAAAAACDQMAAAAAAAgqGExw/tS6yP7/oa/+/0p4qbaT/2jgq/6a/6X+jv8ahQCFAAAAAAIOAAMJAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg0DAAAAAAAHKRh2kv7P2Nz+/3ukxrW8/p/gyP69/xuLAIEAAAAAAg8AAwkAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIOAwAAAAAACC0bTmz92wApbG9f/iG7IL0AkwAAAAACEAADCQABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A//%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%20%u0434%u0440%u0443%u0433%u043E%u043C%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0435%20%u0438%u0437%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0433%u043E%20%u043C%u0435%u043D%u044E%2C%20%u043E%u0442%2027.12.2015.%20..................%0A%28%28contextMenu%2C%20savepage%29%3D%3E%20%7B%0A%0A%20%20%20var%20menu%20%3D%20contextMenu.insertBefore%28document.createElement%28%22menu%22%29%2C%20savepage%29%3B%0A%20%20%20menu.setAttribute%28%22label%22%2C%20%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0435...%22%29%3B%0A%20%20%20menu.setAttribute%28%22class%22%2C%20%22menu-iconic%22%29%3B%0A%20%20%20menu.setAttribute%28%22image%22%2C%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+/vAerq6gIAAAAAakJFdmxcXE1PZHxkUVdoXgAAAADt7e0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw8PAB5uXlAwAAAACBSUmA6GIw/4FES6490v7gM6Dk+mhqdFYAAAAA6urqAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/v7wHm5eUDAAAAAIZMTIX+cED//pph/4tQWLNS6f7fovv+/zuX2/Rtb3paAAAAAOrq6gMAAAAAAAAAAAAAAAAAAAAA5+fnAeDf3wMAAAAAjEtHhf5hO//+l2n5/45g/5ZXWrNO6P/hjf7//5v3/v88mdv1a214WQAAAADu7u4CAAAAAAAAAAAJAAEBzcrKAwAAAACQQzyF/ls6//92UPv/iGD8/4lf/55ZWbNN6v3hZ/f//4n5//yc9/7/N5jc9WFkb1kAAAAA6enpAunp6QEPAAIDAAAAAJIvJ4X+TC///00t+/9iQP7/eFP9/3tV/51ZVrRn7P/hXfL//1ny//6B+P/9lff+/yyV2PVNT1xZAAAAANXW1gIAAAAAjxYKgf6Edv//ZFH6/1E3/f9YOf7/aUf8/4Fh/6dUULJ26//glfL//23y//1l8//+fvj//JT3/v8dk/D1LTE/VgAAAAC1EwCT/p2d//6Hi/7/lpL//6qi//+vo///tKX9/8e0/79KQ7Z/8P/itPP//7P3//62/P//uP/+/8z/+f7l/vn/M6D+9gAFHGH+Rxq8/opp5v91VN//fF7h/31k4f9/aOH/gWrf/oBu6o9RTGZI1/6nmdz/7IPe/+CE4f/igeH/4njd/+J33v7gZcj+5wAfUGMACF1tAAZttgABYbMAAFK0BwVItBUPS7QeFk6zIBlQuUREUUM3azNnHYIewRtyH7UVaRu3D18XtwVSELcASBG3AEQTswEUAE0bS/3UJFT+/wAt5/4AMfH/ADLv/wg9//8zYf/9N2L+/wccU7cw1gXgSf8V/1f/Jv5n/zv/dv9N/4f/Yf+g/oH+R/4N/wcpAHMACCsYFUL+zhBA/v8ALeP5AjT//Q0+//00Xf/7NFr//wAbTbYw2ADgOP8K/0H/E/xZ/zD9b/9M/In+bflW/i7/DUMAfAAAAAAAAAAAAAgqGCVR/tUUQ/7/AC3f+wAx9v8PQP/9CTj//wAdTbc14QDiL/QA/zP/AP5B/xH+V/8t+0P+FP8NRQCBAAAAAAELAAIAAg4DAAAAAAAIKxg2Xv7UOmH+/wAu5PsAM/39AC3z/wAiTbdZ/xziPf8P/y/rAP04/wb7Pf4N/w9QAIEAAAAAAg0AAwkAAQEAAAAAAAINAwAAAAAACCoYTHD+1IWd/v9Jbf/5aYP//w1EfLdv/zjigv9n/3L/T/p6/ln/FGkAgQAAAAACDgAECQABAQAAAAAAAAAAAAAAAAACDQMAAAAAAAgqGExw/tS6yP7/oa/+/0p4qbaT/2jgq/6a/6X+jv8ahQCFAAAAAAIOAAMJAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg0DAAAAAAAHKRh2kv7P2Nz+/3ukxrW8/p/gyP69/xuLAIEAAAAAAg8AAwkAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIOAwAAAAAACC0bTmz92wApbG9f/iG7IL0AkwAAAAACEAADCQABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%29%3B%0A%20%20%20menu.onclick%20%3De%3D%3E%20e.target%20%3D%3D%20menu%20%26%26%20openWith%28array%5B0%5D%5B1%5D%29%3B%0A%20%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%20menu.hidden%20%3D%20%21gContextMenu%2C%20false%2C%20contextMenu%29%3B%0A%20%20%20addDestructor%28%28%29%3D%3E%20menu.remove%28%29%20%29%3B%0A%0A%20%20%20var%20arr%20%3D%20%5B%0A%20%20%20%20%20%20%5B%20%22360%20Browser%22%2C%20%22D%3A%5C%5CEXE-Files%5C%5C%u0411%u0440%u0430%u0443%u0437%u0435%u0440%u044B%5C%5C360Chrome%5C%5C360Loader.exe%22%5D%2C%20%0A%20%20%20%20%20%20%5B%20%22Tor%20Browser%22%2C%20%20%22D%3A%5C%5CEXE-Files%5C%5C%u0411%u0440%u0430%u0443%u0437%u0435%u0440%u044B%5C%5CTor%20Browser%5C%5CTor%20Browser.lnk%22%5D%2C%0A%20%20%20%20%20%20%5B%20%22Internet%20Explorer%22%2C%20%22C%3A%5C%5CProgram%20Files%5C%5CInternet%20Explorer%5C%5Ciexplore.exe%22%5D%2C%20%0A%20%20%20%20%20%20%5B%20%22Download%20Master%22%2C%20%22C%3A%5C%5CProgram%20Files%20%28x86%29%5C%5CDownload%20Master%5C%5Cdmaster.exe%22%5D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20var%20menuPopup%20%3D%20menu.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20arr.forEach%28%28m%29%3D%3E%7B%0A%20%20%20%20%20%20var%20label%20%3D%20m%5B0%5D%2C%20path%20%3D%20m%5B1%5D%3B%0A%20%20%20%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20mItem.setAttribute%28%22label%22%2C%20label%29%3B%0A%20%20%20%20%20%20mItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20%20%20%20mItem.setAttribute%28%22image%22%2C%20%22moz-icon%3A//file%3A//%22%20+%20path%29%3B%20%0A%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20openWith%28path%29%3B%0A%20%20%20%20%20%20menuPopup.appendChild%28%20mItem%20%29%3B%0A%20%20%20%7D%29%3B%0A%0A%20%20%20function%20openWith%28path%29%20%7B%20%20%0A%20%20%20%20%20%20var%20loc%20%3D%20content.document.location%3B%0A%20%20%20%20%20%20var%20url%20%3D%20%28loc.host.slice%28-3%29%20%3D%3D%20%27.%u0440%u0444%27%29%20%3F%20Services.io.newURI%28loc.href%2C%20null%2C%20null%29.asciiSpec%20%3A%20loc%3B%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20%20var%20file%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Ci.nsIFile%29%3B%20%20%20%20%0A%20%20%20%20%20%20file.initWithPath%28path%29%3B%0A%20%20%20%20%20%20var%20process%20%3D%20Cc%5B%22@mozilla.org/process/util%3B1%22%5D.createInstance%28Ci.nsIProcess%29%3B%0A%20%20%20%20%20%20process.init%28file%29%3B%0A%0A%20%20%20%20%20%20%21gContextMenu.onLink%0A%20%20%20%20%20%20%3F%20process.run%28false%2C%20%5Bcontent.location.href%5D%2C%201%29%0A%20%20%20%20%20%20%3A%20process.run%28false%2C%20%5BgContextMenu.linkURL%5D%2C%201%29%3B%0A%20%20%20%7D%3B%0A%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%2C%20document.getElementById%28%22context-savepage%22%29%29%3B%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
Отсутствует
Это в вашей обновленческой реальности.
а у меня СВ жил,СВ жив, СВ будет жить!
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует