Dumby
Здравствуйте, вы бы не могли помочь, если можно создать кнопку переименования контейнера в контекстном меню страницы, чтобы при выделении любого текста на странице, появлялся пункт "Переименовать контейнер"(в контекстном меню) и изменять название на такое, какой текст выделен
Отсутствует
Stkvsky
Вот, не совсем выделенный текст, а не больше 150 символов,
и каждый whitespace-кусок заменён одним пробелом,
но для названия контейнера, думаю, должно подойти.
(sel => { var menuitem = document.createXULElement("menuitem") addDestructor(() => menuitem.remove()); menuitem.hidden = true; contentAreaContextMenu.querySelector(sel).after(menuitem); var id, txt, shouldHide = () => { var cd = nsContextMenu.contentData; return !(id = cd.userContextId) || !(txt = cd.selectionInfo.text); } menuitem.render = () => { if (shouldHide()) return; menuitem.setAttribute("oncommand", "renameContainer()"); menuitem.setAttribute("label", "Переименовать контейнер"); delete menuitem.render; menuitem.render(); menuitem.hidden = false; menuitem.render = () => menuitem.hidden = shouldHide(); menuitem.renameContainer = () => { var cd = ContextualIdentityService.getPublicIdentityFromId(id); ContextualIdentityService.update(id, txt, cd.icon, cd.color); document.getElementById("userContext-label").setAttribute("value", txt); document.getElementById("userContext-icons").setAttribute("tooltiptext", txt); } } })("#context-sep-navigation");
Отсутствует
Bug 1836480 - Convert toolkit/mozapps/extensions/internal/XPI* to ES modules (Firefox 124+)
Антиподписячий код с поправкой
// try {(jsval => { var dbg, gref, genv = func => { var sandbox = new Cu.Sandbox(g, {freshCompartment: true}); Cc["@mozilla.org/jsdebugger;1"].createInstance(Ci.IJSDebugger).addClass(sandbox); (dbg = new sandbox.Debugger()).addDebuggee(g); gref = dbg.makeGlobalObjectReference(g); return (genv = func => func && gref.makeDebuggeeValue(func).environment)(func); } var g = Cu.getGlobalForObject(jsval), o = g.Object, {freeze} = o, disleg; var lexp = () => lockPref("extensions.experiments.enabled", true); var MRS = "MOZ_REQUIRE_SIGNING", AC = "AppConstants", uac = `resource://gre/modules/${AC}.`; if (o.isFrozen(o)) { // Fx 102.0b7+ lexp(); disleg = true; genv(); dbg.onEnterFrame = frame => { var {script} = frame; try {if (!script.url.startsWith(uac)) return;} catch {return;} dbg.onEnterFrame = undefined; if (script.isModule) { // ESM, Fx 108+ var env = frame.environment; frame.onPop = () => env.setVariable(AC, gref.makeDebuggeeValue(freeze( o.assign(new o(), env.getVariable(AC).unsafeDereference(), {[MRS]: false}) ))); } else { // JSM var nsvo = frame.this.unsafeDereference(); nsvo.Object = {freeze(ac) { ac[MRS] = false; delete nsvo.Object; return freeze(ac); }}; } } } else o.freeze = obj => { if (!Components.stack.caller.filename.startsWith(uac)) return freeze(obj); obj[MRS] = false; if ((disleg = "MOZ_ALLOW_ADDON_SIDELOAD" in obj)) lexp(); else obj.MOZ_ALLOW_LEGACY_EXTENSIONS = true, lockPref("extensions.legacy.enabled", true); return (o.freeze = freeze)(obj); } lockPref("xpinstall.signatures.required", false); lockPref("extensions.langpacks.signatures.required", false); var useDbg = true, xpii = "resource://gre/modules/addons/XPIInstall."; if (Ci.nsINativeFileWatcherService) { // Fx < 100 jsval = Cu.import(xpii + "jsm", {}); var shouldVerify = jsval.shouldVerifySignedState; if (shouldVerify.length == 1) useDbg = false, jsval.shouldVerifySignedState = addon => !addon.id && shouldVerify(addon); } if (useDbg) { // Fx 99+ try {var exp = ChromeUtils.importESModule(xpii + "sys.mjs");} catch {exp = g.ChromeUtils.import(xpii + "jsm");} jsval = o.assign({}, exp); var env = genv(jsval.XPIInstall.installTemporaryAddon); var ref = name => {try {return env.find(name).getVariable(name).unsafeDereference();} catch {}} jsval.XPIDatabase = (ref("XPIExports") || ref("lazy") || {}).XPIDatabase || ref("XPIDatabase"); var proto = ref("Package").prototype; var verify = proto.verifySignedState; proto.verifySignedState = function(id) { return id ? {cert: null, signedState: undefined} : verify.apply(this, arguments); } dbg.removeAllDebuggees(); } if (disleg) jsval.XPIDatabase.isDisabledLegacy = () => false; })( "permitCPOWsInScope" in Cu ? Cu.import("resource://gre/modules/WebRequestCommon.jsm", {}) : Cu );} catch(ex) {Cu.reportError(ex);}
Отсутствует
Как программно кликнуть на пункте контекстного меню?
В меню картинки есть пункт "Открыть изображение в новой вкладке". Его id = "context-viewimage".
Если я открываю меню ПКМ, то программно кликается нормально.
Но если открыть контекстное меню через
То вместо клика в консоли ошибка gContextMenu is null
Что надо поправить?
Отсутствует
hartumov
В контентских процессах событие "contextmenu" пасёт ContextMenuChild
resource:///actors/ContextMenuChild.jsm
При наступлении события он собирает информацию о кликнутом,
и отправляет её в родительский процесс, в ContextMenuParent
resource:///actors/ContextMenuParent.jsm
Тот вызывает window.openContextMenu(),
где информация сохраняется в nsContextMenu.contentData,
и открывается контекстное меню.
Меню имеет атрибут "onpopupshowing", где, при наступлении события,
из сохранённой информации формируется объект gContextMenu
chrome://browser/content/nsContextMenu.js
Ты хочешь всё это миновать и сразу кликнуть по пункту.
А какое именно изображение имеется в виду программно-кликающим,
видимо, должно определиться как-то телепатически.
Отсутствует
hartumov
В контентских процессах событие "contextmenu" пасёт ContextMenuChild
resource:///actors/ContextMenuChild.jsmПри наступлении события он собирает информацию о кликнутом,
и отправляет её в родительский процесс, в ContextMenuParent
resource:///actors/ContextMenuParent.jsmТот вызывает window.openContextMenu(),
где информация сохраняется в nsContextMenu.contentData,
и открывается контекстное меню.Меню имеет атрибут "onpopupshowing", где, при наступлении события,
из сохранённой информации формируется объект gContextMenu
chrome://browser/content/nsContextMenu.jsТы хочешь всё это миновать и сразу кликнуть по пункту.
А какое именно изображение имеется в виду программно-кликающим,
видимо, должно определиться как-то телепатически.
Да любое изображение на любой веб странице, если в его контекстном меню есть пункт "Открыть изображение в новой вкладке". Хотя бы на этой странице иконка браузера там где указан UA пользователя.
И дело не только в том, чтобы программно именно открыть картинку. Вообще, возможность кликнуть на пункте контекстного меню очень полезная. В старых версиях ФФ это делалось намного проще.
Можно это как то реализовать?
Или иным путем выполнить то, что делает скажем команда gContextMenu.copyMediaLocation() или gContextMenu.copyLink()
Отсутствует
Помогите с кнопкой Switch Keyboard Layout
(keybUtils => { var btn = this; var listener = { handleEvent(e) { if(e.target != btn) return; e.preventDefault(); e.stopPropagation(); this.switch(); }, switch() { var br = document.activeElement; br && br.localName == "browser" && br.isRemoteBrowser ? br.messageManager.loadFrameScript(this.url, false) : this.keybUtils.switchSelKeybLayout(); }, get url() { delete this.url; return this.url = `data:;charset=utf-8,(${ encodeURIComponent(keybUtils) }).switchSelKeybLayout()`; }, get keybUtils() { delete this.keybUtils; var url = "data:;charset=utf-8,this.keybUtils = " + encodeURIComponent(keybUtils); Services.scriptloader.loadSubScript(url, this); this.keybUtils.button = btn; this.keybUtils.getFocusedElement = function(_subCall, _focusFixed) { if( !_focusFixed && "closeMenus" in window && document.commandDispatcher.focusedElement == this.button ) { closeMenus(this.button); setTimeout(function(_this) { _this.switchSelKeybLayout(_subCall, true); }, 0, this); return; } return document.commandDispatcher.focusedElement; } return this.keybUtils; } }; if(btn instanceof XULElement && addEventListener.length > 3) { addEventListener("command", listener, true, this.parentNode); } listener.switch(); })(`{ //== Options noSelBehavior: { // Shift+Home ctrlKey: false, altKey: false, shiftKey: true, metaKey: false, keyCode: KeyEvent.DOM_VK_HOME, charCode: 0 }, // 0 - do nothing // 1 - convert all text // Or use object like following to simulate "keypress" event: /* noSelBehavior: { // Ctrl+Shift+Left ctrlKey: true, altKey: false, shiftKey: true, metaKey: false, keyCode: KeyEvent.DOM_VK_LEFT, charCode: 0 } */ convTableForward: { // ru -> en "\\"": "@", ":": "^", ";": "$", "?": "&", ",": "?", "/": "|", ".": "/", "э": "'", "б": ",", "ю": ".", "Ж": ":", "ж": ";", "Б": "<", "Ю": ">", "Э": "\\"", "х": "[", "ъ": "]", "ё": "\`", "Х": "{", "Ъ": "}", "Ё": "~", "№": "#", "Ф": "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 }, //== End of options get convTableBackward() { var ctb = { __proto__: null }; var ctf = this.convTableForward; for(var c in ctf) ctb[ctf[c]] = c; delete this.convTableBackward; return this.convTableBackward = ctb; }, inPrimaryLayout: function(s) { for(var i = 0, l = s.length; i < l; ++i) { var c = s.charAt(i); if(c in this.convTableForward) return true; if(c in this.convTableBackward) return false; } return false; }, switchKeybLayout: function(s, convTable) { var res = ""; for(var i = 0, l = s.length; i < l; ++i) { var c = s.charAt(i); res += c in convTable ? convTable[c] : c; } return res; }, getFocusedElement: function() { return Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager) .getFocusedElementForWindow(content, true, {}); }, switchSelKeybLayout: function(_subCall, _focusFixed) { var fe = this.getFocusedElement(_subCall, _focusFixed); if(!fe) return; if(fe instanceof HTMLInputElement || fe instanceof HTMLTextAreaElement) { var ta = fe; try { var val = ta.value; var sel = val.substring(ta.selectionStart, ta.selectionEnd); } catch(e) { // Non-text HTMLInputElement return; } if(!sel && val && this.noSelBehavior && !_subCall) { if(this.noSelBehavior == 1) { ta.selectionStart = 0; ta.selectionEnd = val.length; sel = val; } else { this.handleNoSel(ta); return; } } if(!sel) return; var res = this.switchKeybLayout( sel, this.inPrimaryLayout(sel) ? this.convTableForward : this.convTableBackward ); if(res != sel) this.insertText(ta, res); } else if(fe.contentEditable == "true") { var doc = fe.ownerDocument; var docURI = doc.documentURI; if( docURI.substr(0, 5) == "data:" && docURI.indexOf("chrome://browser/skin/devtools/") != -1 ) { //~ todo: seems like we only can use paste from clipboard here... return; } var sel = doc.defaultView.getSelection(); var rng = sel.rangeCount && sel.getRangeAt(0); var tmpNode; if(!rng || rng.collapsed) { if(!this.noSelBehavior || _subCall) return; if(this.noSelBehavior == 1) { var r = doc.createRange(); r.selectNodeContents(fe); sel.removeAllRanges(); sel.addRange(r); tmpNode = fe.cloneNode(true); } else { this.handleNoSel(fe); return; } } else { tmpNode = doc.createElementNS("http://www.w3.org/1999/xhtml", "div"); tmpNode.appendChild(rng.cloneContents()); } var orig = tmpNode.innerHTML; var convTable = this.inPrimaryLayout(tmpNode.textContent) ? this.convTableForward : this.convTableBackward; var _this = this; var parseChildNodes = function(node) { if(node instanceof Element) { var childNodes = node.childNodes; for(var i = childNodes.length - 1; i >= 0; --i) parseChildNodes(childNodes[i]); } else if(node.nodeType == node.TEXT_NODE) { var text = node.nodeValue; var newText = _this.switchKeybLayout(node.nodeValue, convTable); if(newText != text) node.parentNode.replaceChild(doc.createTextNode(newText), node); } } parseChildNodes(tmpNode); var res = tmpNode.innerHTML; if(res != orig) doc.execCommand("insertHTML", false, res); } }, handleNoSel: function(node) { this.select(node); this.switchSelKeybLayout(true); }, select: function(node) { var e = this.noSelBehavior; if(!e || typeof e != "object") return; var evt = node.ownerDocument.createEvent("KeyboardEvent"); evt.initKeyEvent( "keypress", true /*bubbles*/, true /*cancelable*/, node.ownerDocument.defaultView, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.keyCode, e.charCode ); node.dispatchEvent(evt); }, insertText: function(ta, text) { //var editor = ta.QueryInterface(Components.interfaces.nsIDOMNSEditableElement).editor var editor = ta.editor if(editor.flags & editor.eEditorReadonlyMask) return; var sTop = ta.scrollTop; var sHeight = ta.scrollHeight; var sLeft = ta.scrollLeft; // var sWidth = ta.scrollWidth; if(text) editor.insertText(text); else editor.deleteSelection(0, 0); ta.scrollTop = sTop + (ta.scrollHeight - sHeight); ta.scrollLeft = sLeft; // + (ta.scrollWidth - sWidth); } }`);
gBrowser.selectedBrowser.messageManager.loadFrameScript(this.fsURL || ( this.fsURL = `data:,(match => {\n${encodeURIComponent(this.Help)}\n})()` ), false);
Отредактировано VORON (11-02-2024 11:33:26)
Отсутствует
Помогите с кнопкой Switch Keyboard Layout
скрытый текст
Что нужно поправить,чтоб заработала на 121й лисе?
И откуда такое только берётся, этот код уже обсуждался не раз и не два.
Поправить, как минимум
/* if(c in this.convTableForward) return true; if(c in this.convTableBackward) return false; */ var primary = c in this.convTableForward; if(primary ^ c in this.convTableBackward) return primary;
\`/* var evt = node.ownerDocument.createEvent("KeyboardEvent"); evt.initKeyEvent( "keypress", true /*bubbles*/, true /*cancelable*/, node.ownerDocument.defaultView, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.keyCode, e.charCode ); node.dispatchEvent(evt); }, */\`; if(ChromeUtils.domProcessChild.childID) { var cmd = this.beh2cmd[e.ctrlKey + "_" + e.shiftKey + "_" + e.keyCode]; cmd && docShell.doCommand(cmd); } else node.dispatchEvent(new node.ownerGlobal.KeyboardEvent("keypress", e)); }, beh2cmd: { // Ctrl_Shift_VK false_true_36: "cmd_selectBeginLine", // Shift+Home },
/* if(fe instanceof HTMLInputElement || fe instanceof HTMLTextAreaElement) { */ if(HTMLInputElement.isInstance(fe) || HTMLTextAreaElement.isInstance(fe)) { //..... /* if(node instanceof Element) { */ if(Element.isInstance(node)) {
И,вдогонку, эта тоже перестала работать...
Положил на Справку content.alert(2+2);
Жму кнопку — алертится четыре.
Отсутствует
b0ttle
эта кнопка спасает,когда забыл переключить раскладку и написал ghbdtn вместо привет
Добавлено 11-02-2024 20:05:56
Dumby
Там же в справке ещё куча всего лежит,что ты когда то советовал туда переложить
/* Linkification Original script by Misha Splurov http://userscripts.org/scripts/show/67744 */ // (c) http://data.iana.org/TLD/tlds-alpha-by-domain.txt var domains = [ "ac", "ad", "ae", "aero", "af", "ag", "ai", "al", "am", "an", "ao", "aq", "ar", "arpa", "as", "asia", "atif(ChromeUtils.domProcessChild.childID) { var cmd = this.beh2cmd[e.ctrlKey + "_" + e.shiftKey + "_" + e.keyCode]; cmd && docShell.doCommand(cmd); } else node.dispatchEvent(new node.ownerGlobal.KeyboardEvent("keypress", e)); }, beh2cmd: { // Ctrl_Shift_VK false_true_36: "cmd_selectBeginLine", // Shift+Home", "au", "aw", "ax", "az", "ba", "bb", "bd", "be", "bf", "bg", "bh", "bi", "biz", "bj", "bm", "bn", "bo", "br", "bs", "bt", "bv", "bw", "by", "bz", "ca", "cat", "cc", "cd", "cf", "cg", "ch", "ci", "ck", "cl", "cm", "cn", "co", "com", "coop", "cr", "cu", "cv", "cx", "cy", "cz", "de", "dj", "dk", "dm", "do", "dz", "ec", "edu", "ee", "eg", "er", "es", "et", "eu", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gb", "gd", "ge", "gf", "gg", "gh", "gi", "gl", "gm", "gn", "gov", "gp", "gq", "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr", "ht", "hu", "id", "ie", "il", "im", "in", "info", "int", "io", "iq", "ir", "is", "it", "je", "jm", "jo", "jobs", "jp", "ke", "kg", "kh", "ki", "km", "kn", "kp", "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", "lr", "ls", "lt", "lu", "lv", "ly", "ma", "mc", "md", "me", "mg", "mh", "mil", "mk", "ml", "mm", "mn", "mo", "mobi", "mp", "mq", "mr", "ms", "mt", "mu", "museum", "mv", "mw", "mx", "my", "mz", "na", "name", "nc", "ne", "net", "nf", "ng", "ni", "nl", "no", "np", "nr", "nu", "nz", "om", "org", "pa", "pe", "pf", "pg", "ph", "pk", "pl", "pm", "pn", "pr", "pro", "ps", "pt", "pw", "py", "qa", "re", "ro", "rs", "ru", "rw", "sa", "sb", "sc", "sd", "se", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sr", "st", "su", "sv", "sy", "sz", "tc", "td", "tel", "tf", "tg", "th", "tj", "tk", "tl", "tm", "tn", "to", "tp", "tr", "travel", "tt", "tv", "tw", "tz", "ua", "ug", "uk", "us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu", "wf", "ws", "ye", "yt", "yu", "za", "zm", "zw" ]; // (c) http://yellow5.us/firefox/linkification/ var tagsForSkip = [ "a", "applet", "area", "embed", "frame", "frameset", "head", "iframe", "img", "map", "meta", "noscript", "object", "option", "param", "script", "select", "style", "textarea", "title" ]; var inArray = function(value, items) { for (var i = 0; items[i] && value != items[i]; i++); return value == items[i]; } var urlsRegExp = /(^|[\s()\[\]_:~+@*"'>])((?:https?|ftp|irc):\/\/)?([-a-z\d;:&=+$,%_.!~*'()]+@)?((?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:(www|irc|ftp)\.)?(?:(?:[a-z\d]|[a-z\d][a-z\d-]*[a-z\d])\.)+([a-z]{2,6}))(:\d+)?(\/(?:[-\w.!~*'()%:@&=+$,;\/]*[\w~*%@&=+$\/])?(?:\?(?:[-\w;\/?:@&=+$,.!~*'()%\[\]|]*[\w\/@&=+$~*%])?)?(?:#(?:[-\w;\/?:@&=+$,.!~*'()%]*[\w\/@&=+$~*%])?)?|\b)/i var linksCounter = 0; var current = content.document.body; while (current) { if (current.nodeName == "#text" && (match = current.nodeValue.match(urlsRegExp)) && inArray(match[6], domains)) { var url; if (match[3] && ! match[2] && ! match[5] && ! match[8] && (match[3].indexOf(":") == -1 || match[3].indexOf("mailto:") == 0)) { url = (match[3].indexOf("mailto:") == -1 ? "mailto:" : "") + match[3] + match[4]; } else { url = (match[2] ? match[2] : (! match[5] || match[5] == "www" ? "http" : match[5]) + "://") + (match[3] ? match[3] : "") + match[4] + (match[7] ? match[7] : "") + (match[8] ? match[8] : ""); } if (url) { var range = content.document.createRange(); range.setStart(current, match.index + match[1].length); range.setEnd(current, match.index + match[0].length); var a = content.document.createElement("a"); a.setAttribute("href", url); a.setAttribute("target", "_blank"); a.setAttribute("class", "linkified"); a.appendChild(range.extractContents()); range.insertNode(a); range.detach(); linksCounter++; } } if (current.tagName && !inArray(current.tagName.toLowerCase(), tagsForSkip) && current.firstChild) { current = current.firstChild; } else if (current.nextSibling) { current = current.nextSibling; } else { do { current = current.parentNode; } while (!current.nextSibling && current.parentNode); current = current.nextSibling; } } /* if (linksCounter > 0) { var style = content.document.createElement("style"); style.type = "text/css"; style.appendChild(content.document.createTextNode("a.linkified:before {content: "~"; color: #e00;}")); content.document.getElementsByTagName("head")[0].appendChild(style); } */
Отредактировано VORON (11-02-2024 20:10:47)
Отсутствует
VORON
Тогда мимо, я уже обрадовался) Искал что-то подобное https://addons.mozilla.org/en-US/firefo … e-translit. Он норм, но некоторые буквы не мешало бы перенастроить.
Отредактировано b0ttle (11-02-2024 20:10:48)
Отсутствует
ещё куча всего лежит
Да неужели .
Хорошо, почистил кучу от непонятно зачем туда
всунутого кода из среднего патча для Switch Keyboard Layout.
Кладу кучу на Справку. Топаю по адресу:
data:text/plain;charset=utf-8,example.com
Жму кнопку — текст example.com превращается в ссылку example.com
Отсутствует
Жму кнопку
А ненадо было там ничего нажимать, она автоматом в ссылки превращала.
Например тут, у меня не работает,хоть нажимай,хоть не нажимай.
А скажи,а у тебя вот эта кнопка ещё живая или альтернативу подскажи? На 91й у меня работало расширение от Виталия,вроде оно давало выезжающую боковую панель,на 121й не работает.
И,последнее,без чего тяжело - эта кнопка отремонтированное опять перестало фурычить...
Отредактировано VORON (12-02-2024 19:53:28)
Отсутствует
VORON
Скрипт работает, если это нужно постоянно. Если вкл/выкл, есть кнопка в ATB от Виталия, но работает своеобразно.
Отсутствует
А ненадо было там ничего нажимать, она автоматом в ссылки превращала.
Этого не может быть. Ни приведённый тобой код, ни тот, что в «Готовых»,
определённо не рассчитан ни на какую автоматизацию, линкификация только по клику.
Например тут, у меня не работает,хоть нажимай,хоть не нажимай.
Не работает кнопка 2013 года? Удивительно, правда?
С тех давних пор, как контент выслали от пользователя к лису на кулички — в другой процесс,
Custom Buttons больше не является удобным инструментом для взаимодействия со страницами.
Как правильно сказал xrun1, следует использовать какую-нибудь обезьяну.
А скажи,а у тебя вот эта кнопка ещё живая или альтернативу подскажи? На 91й у меня работало расширение от Виталия,вроде оно давало выезжающую боковую
Ну, расширение-то вряд ли. Видимо имеется в виду UCF, и да,
там есть вертикальный тулбар, и можно настроить чтобы выезжал.
А кнопка, конечно, мёртвая, да она и не требуется по вышеупомянутой причине.
на 121й не работает
Ещё бы, прыгать через тридцать версий. Хромский код столько не живёт, обновлять нужно.
Можно, например, в первом посте укфской темы, у Dobrov'а взять с гитхаба.
Я проверил на Firefox 122.0 — работает. Автоскрытие надо поднастроить.
Говорят, есть и отдельные коды для дополнительных тулбаров,
но всё равно нужно выбирать и разворачивать какой-то скриптоприёмик,
и не знаю есть ли среди них именно вертикальный выдвигающийся.
Топик здесь уже юзерхромский, ну и на руборде есть довольно общий.
И,последнее,без чего тяжело - эта кнопка отремонтированное опять перестало фурычить...
Я попробовал «отремонтированное» на Firefox 124.0a1 и у меня работает.
Ну, только в fission oop-фреймах не работает.
Отсутствует
xrun1
Спасибо,возьмём на вооружение.
Ещё бы, прыгать через тридцать версий
Так вот из-за этих гемороев,с восстановлением удобств и неохота на новые версии переходить.
Не работает кнопка 2013 года? Удивительно, правда?
Не,не-я ту ссылку для примера привёл,ибо те адреса,что там есть у меня не активируются почему то,даже по клику.
Добавлено 13-02-2024 20:14:30
Dumby
Switch Keyboard Layout после твоих правок-работает,а вот ни Linkification, ни Автоматически добавлять выделенный текст в SearchBar(и в код ложил отремонтированное и в инициализацию,толку-0) категорически не хотят.
Отредактировано VORON (13-02-2024 20:14:30)
Отсутствует
ни Linkification, ни Автоматически добавлять выделенный текст в SearchBar(и в код ложил отремонтированное и в инициализацию,толку-0) категорически не хотят
В SearchBar'ской кнопке не надо ничего во вкладку Код класть,
только во вкладку Инициализация.
И кнопку нажимать надо, чтобы включать/выключать добавление,
оно ведь не должно постоянно работать (так задумано в оригинале).
И, лучше перезапустить браузер, а то мало ли что могло заклинить
от ненужных перестановок кодов по вкладкам.
В Linkification я вообще не представляю что может не работать.
Вобщем, остаётся разве что только выложить URL неработающих кнопок.
ПКМ по кнопке —> «Копировать код в буфер», а я посмотрю, вдруг там что-то обнаружится.
Отсутствует
Dumby
Linkification поборол,создав с нуля,а вот SearchBar нивкакую...
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%3E%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20SearchBar%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABcAAAAVCAYAAACt4nWrAAADQklEQVQ4ja3V/08adxzHcf+t/bT90HTLtmT7F5Ym/XUsy4Uu7mdKYiawudaq04DWjVoFxWgRrU5txDL5clKkIDVBVpE77j5wgPW45LkfTMgOf1gb98Pjt/fr+fntbkAIgdfrxel04nA4bszpdOL1ehFCMHDf7cbn81GtVrEs68aq1So+n4/7bjcDkiRRq9UwTZNms3ljpmlSq9WQJIkBh8OBZVnXjlRVJZFIMB9eZPr3IMG5efb399E07T8fsCwLh8NxFe92uzQajZ5qtcrCUoRYKkv8TGfzbZtQ7oyxyBaBQIBarWa779ftdu1xIQRCCBRFYSES4ZWic37Z5fTCJK29Y+20RfC14NHzQ6ZnHqPrem/T71pc13V0XSeZTLL0UqbSucToWpxemCS1dzwrGwRfCyZljeHAArlcrrfpZ4ubpkm9XqderxNaWiZaUik0LjluXpLSLtg+axE5aTKT05jMaDxYP2RlZaW36Weapj2uqiqqqvI4OEe4JNh+a7B71mLz7xbLJ02CeZ3fMnUmUnUebBUIh0K9Tb9rcUVRUBSFpwth/AenPC00WDhuMF8QzB5pTMp1Rv5S8Wc0RqJpVldXe5t+tnin06FUKlEqldjc3MQ7/5zxpMJEWmU8pTB6oOCNnzPyUuFRQmVoNEAymext+nU6HXu8WCxSLBbJ5/OMjY8zHM0wvHeOJ36OZ++chwmFX+M1PE/WGRwcZGpqio1YrLf7t2vxQqHQc3h4yMPRMYb8YX56JjO8cczPUZmhsRnu3XOSTqdZW5wl+90tTrbXbNtCoWCPt9tt8vm8zdHREbFYjIDfz9TkJIGAn52dHaanp4nMz/Bm6Q7WzJdc/vAJb/6M2rbtdtsez+Vy7yUWi7H/7ReYE59C/A4Ev8J0fkRpY7l3Y4u3Wi2y2ex7y+9s0HbegqnP4MU3MPc16o+3iS4tks1mabVa9rgsyx8k92KLzvcfw8RtrL27HKw/4Y9gEFmW7XHDMMhkMh/s1e4Wdefn7AZ/IRQKMTs7SyaTwTCMq7gkSZTLZVRVJZVK3ZiqqpTL5avvudvtxuPxUKlUMAzjxiqVCh6PB7fbzYAQApfLhSRJ/8s/VJIkXC4XQgj+AW9cSYbbZ7hEAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28%28id%2C%20code%29%20%3D%3E%20%7B%0A%20%20%20%20var%20pref%20%3D%20%22CB.pasteIntoSearchBar%22%3B%0A%20%20%20%20var%20checker%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20var%20val%20%3D%20Services.prefs.getBoolPref%28pref%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20this.checked%20%3D%20val%3B%0A%20%20%20%20%20%20%20%20var%20has%20%3D%20id%20in%20g%3B%0A%20%20%20%20%20%20%20%20val%20%3F%20has%20%7C%7C%20init%28%29%20%3A%20has%20%26%26%20destroy%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20Services.prefs.addObserver%28pref%2C%20checker%29%3B%0A%20%20%20%20this._handleClick%20%3D%20%28%29%20%3D%3E%20Services.prefs.setBoolPref%28%0A%20%20%20%20%20%20%20%20pref%2C%20%21Services.prefs.getBoolPref%28pref%2C%20false%29%0A%20%20%20%20%29%3B%0A%20%20%20%20var%20gs%20%3D%20%22Cu.getGlobalForObject%28Cu%29%22%2C%20g%20%3D%20eval%28gs%29%3B%0A%0A%20%20%20%20var%20psi%2C%20psd%2C%20fsi%2C%20fsd%2C%20receiver%2C%20vars%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20var%20d%20%3D%20%22data%3A%2C%22%2C%20ref%20%3D%20gs%20+%20%22.%22%20+%20id%2C%20dref%20%3D%20d%20+%20ref%3B%0A%20%20%20%20%20%20%20%20psi%20%3D%20dref%20+%20%22%3D%22%20+%20encodeURIComponent%28code.replace%28%22%25MSG%25%22%2C%20id%29%29%3B%0A%20%20%20%20%20%20%20%20psd%20%3D%20d%20+%20%22delete%20%22%20+%20ref%3B%0A%20%20%20%20%20%20%20%20fsi%20%3D%20dref%20+%20%22.init%28this%29%22%3B%0A%20%20%20%20%20%20%20%20fsd%20%3D%20dref%20+%20%22.destroy%28this%29%22%3B%0A%20%20%20%20%20%20%20%20receiver%20%3D%20msg%20%3D%3E%20%7Btry%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20msg.target.ownerGlobal.windowRoot.ownerGlobal%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.BrowserSearch.searchBar._textbox.value%20%3D%20msg.data%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%7D%7D%0A%20%20%20%20%20%20%20%20vars%20%3D%20%28%29%20%3D%3E%20%7B%7D%0A%20%20%20%20%7D%0A%20%20%20%20var%20init%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20vars%28%29%3B%0A%20%20%20%20%20%20%20%20Services.ppmm.loadProcessScript%28psi%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.loadFrameScript%28fsi%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20g%5Bid%5D.receiveMessage%20%3D%20receiver%3B%0A%20%20%20%20%20%20%20%20Services.mm.addMessageListener%28id%2C%20g%5Bid%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20destroy%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20vars%28%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.removeDelayedFrameScript%28fsi%29%3B%0A%20%20%20%20%20%20%20%20Services.ppmm.removeDelayedProcessScript%28psi%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.loadFrameScript%28fsd%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.removeMessageListener%28id%2C%20g%5Bid%5D%29%3B%0A%20%20%20%20%20%20%20%20Services.ppmm.loadProcessScript%28psd%2C%20false%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20checker%28%29%3B%0A%0A%20%20%20%20addDestructor%28reason%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20Services.prefs.removeObserver%28pref%2C%20checker%29%3B%0A%20%20%20%20%20%20%20%20reason%5B5%5D%20%3D%3D%20%22e%22%20%26%26%20id%20in%20g%20%26%26%20destroy%28%29%3B%0A%20%20%20%20%7D%29%3B%0A%7D%29%28%22CB_ButtonCodeFragmentIdentifier_PasteIntoSearchBar%22%2C%20%60%7B%0A%20%20%20%20init%28cfmm%29%20%7B%0A%20%20%20%20%20%20%20%20cfmm.addEventListener%28%22selectstart%22%2C%20this%29%3B%0A%20%20%20%20%20%20%20%20cfmm.addEventListener%28%22unload%22%2C%20this%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20destroy%28cfmm%29%20%7B%0A%20%20%20%20%20%20%20%20cfmm.removeEventListener%28%22selectstart%22%2C%20this%29%3B%0A%20%20%20%20%20%20%20%20cfmm.removeEventListener%28%22unload%22%2C%20this%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20handleEvent%28e%29%20%7B%0A%20%20%20%20%20%20%20%20this%5Be.type%5D%28e%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20selectstart%28e%29%20%7B%0A%20%20%20%20%20%20%20%20e.target.ownerGlobal.addEventListener%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%22mouseup%22%2C%20this%2C%20%7Bonce%3A%20true%7D%0A%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20mouseup%28e%29%20%7B%0A%20%20%20%20%20%20%20%20var%20win%20%3D%20e.target.ownerGlobal%3B%0A%20%20%20%20%20%20%20%20var%20sel%20%3D%20win.getSelection%28%29%3B%0A%20%20%20%20%20%20%20%20sel%20%3D%20%21sel.isCollapsed%20%26%26%20sel.toString%28%29%3B%0A%20%20%20%20%20%20%20%20/%5C%5CS/.test%28sel%29%20%26%26%20win.docShell.messageManager%0A%20%20%20%20%20%20%20%20%20%20%20%20.sendAsyncMessage%28%22%25MSG%25%22%2C%20sel%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20unload%28e%29%20%7B%0A%20%20%20%20%20%20%20%20this.destroy%28e.target%29%3B%0A%20%20%20%20%7D%0A%7D%60%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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%3Ecustombutton://%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%3E%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20SearchBar%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABcAAAAVCAYAAACt4nWrAAADQklEQVQ4ja3V/08adxzHcf+t/bT90HTLtmT7F5Ym/XUsy4Uu7mdKYiawudaq04DWjVoFxWgRrU5txDL5clKkIDVBVpE77j5wgPW45LkfTMgOf1gb98Pjt/fr+fntbkAIgdfrxel04nA4bszpdOL1ehFCMHDf7cbn81GtVrEs68aq1So+n4/7bjcDkiRRq9UwTZNms3ljpmlSq9WQJIkBh8OBZVnXjlRVJZFIMB9eZPr3IMG5efb399E07T8fsCwLh8NxFe92uzQajZ5qtcrCUoRYKkv8TGfzbZtQ7oyxyBaBQIBarWa779ftdu1xIQRCCBRFYSES4ZWic37Z5fTCJK29Y+20RfC14NHzQ6ZnHqPrem/T71pc13V0XSeZTLL0UqbSucToWpxemCS1dzwrGwRfCyZljeHAArlcrrfpZ4ubpkm9XqderxNaWiZaUik0LjluXpLSLtg+axE5aTKT05jMaDxYP2RlZaW36Weapj2uqiqqqvI4OEe4JNh+a7B71mLz7xbLJ02CeZ3fMnUmUnUebBUIh0K9Tb9rcUVRUBSFpwth/AenPC00WDhuMF8QzB5pTMp1Rv5S8Wc0RqJpVldXe5t+tnin06FUKlEqldjc3MQ7/5zxpMJEWmU8pTB6oOCNnzPyUuFRQmVoNEAymext+nU6HXu8WCxSLBbJ5/OMjY8zHM0wvHeOJ36OZ++chwmFX+M1PE/WGRwcZGpqio1YrLf7t2vxQqHQc3h4yMPRMYb8YX56JjO8cczPUZmhsRnu3XOSTqdZW5wl+90tTrbXbNtCoWCPt9tt8vm8zdHREbFYjIDfz9TkJIGAn52dHaanp4nMz/Bm6Q7WzJdc/vAJb/6M2rbtdtsez+Vy7yUWi7H/7ReYE59C/A4Ev8J0fkRpY7l3Y4u3Wi2y2ex7y+9s0HbegqnP4MU3MPc16o+3iS4tks1mabVa9rgsyx8k92KLzvcfw8RtrL27HKw/4Y9gEFmW7XHDMMhkMh/s1e4Wdefn7AZ/IRQKMTs7SyaTwTCMq7gkSZTLZVRVJZVK3ZiqqpTL5avvudvtxuPxUKlUMAzjxiqVCh6PB7fbzYAQApfLhSRJ/8s/VJIkXC4XQgj+AW9cSYbbZ7hEAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28%28id%2C%20code%29%20%3D%3E%20%7B%0A%20%20%20%20var%20pref%20%3D%20%22CB.pasteIntoSearchBar%22%3B%0A%20%20%20%20var%20checker%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20var%20val%20%3D%20Services.prefs.getBoolPref%28pref%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20this.checked%20%3D%20val%3B%0A%20%20%20%20%20%20%20%20var%20has%20%3D%20id%20in%20g%3B%0A%20%20%20%20%20%20%20%20val%20%3F%20has%20%7C%7C%20init%28%29%20%3A%20has%20%26%26%20destroy%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20Services.prefs.addObserver%28pref%2C%20checker%29%3B%0A%20%20%20%20this._handleClick%20%3D%20%28%29%20%3D%3E%20Services.prefs.setBoolPref%28%0A%20%20%20%20%20%20%20%20pref%2C%20%21Services.prefs.getBoolPref%28pref%2C%20false%29%0A%20%20%20%20%29%3B%0A%20%20%20%20var%20gs%20%3D%20%22Cu.getGlobalForObject%28Cu%29%22%2C%20g%20%3D%20eval%28gs%29%3B%0A%0A%20%20%20%20var%20psi%2C%20psd%2C%20fsi%2C%20fsd%2C%20receiver%2C%20vars%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20var%20d%20%3D%20%22data%3A%2C%22%2C%20ref%20%3D%20gs%20+%20%22.%22%20+%20id%2C%20dref%20%3D%20d%20+%20ref%3B%0A%20%20%20%20%20%20%20%20psi%20%3D%20dref%20+%20%22%3D%22%20+%20encodeURIComponent%28code.replace%28%22%25MSG%25%22%2C%20id%29%29%3B%0A%20%20%20%20%20%20%20%20psd%20%3D%20d%20+%20%22delete%20%22%20+%20ref%3B%0A%20%20%20%20%20%20%20%20fsi%20%3D%20dref%20+%20%22.init%28this%29%22%3B%0A%20%20%20%20%20%20%20%20fsd%20%3D%20dref%20+%20%22.destroy%28this%29%22%3B%0A%20%20%20%20%20%20%20%20receiver%20%3D%20msg%20%3D%3E%20%7Btry%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20msg.target.ownerGlobal.windowRoot.ownerGlobal%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.BrowserSearch.searchBar._textbox.value%20%3D%20msg.data%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%7D%7D%0A%20%20%20%20%20%20%20%20vars%20%3D%20%28%29%20%3D%3E%20%7B%7D%0A%20%20%20%20%7D%0A%20%20%20%20var%20init%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20vars%28%29%3B%0A%20%20%20%20%20%20%20%20Services.ppmm.loadProcessScript%28psi%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.loadFrameScript%28fsi%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20g%5Bid%5D.receiveMessage%20%3D%20receiver%3B%0A%20%20%20%20%20%20%20%20Services.mm.addMessageListener%28id%2C%20g%5Bid%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20destroy%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20vars%28%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.removeDelayedFrameScript%28fsi%29%3B%0A%20%20%20%20%20%20%20%20Services.ppmm.removeDelayedProcessScript%28psi%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.loadFrameScript%28fsd%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.removeMessageListener%28id%2C%20g%5Bid%5D%29%3B%0A%20%20%20%20%20%20%20%20Services.ppmm.loadProcessScript%28psd%2C%20false%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20checker%28%29%3B%0A%0A%20%20%20%20addDestructor%28reason%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20Services.prefs.removeObserver%28pref%2C%20checker%29%3B%0A%20%20%20%20%20%20%20%20reason%5B5%5D%20%3D%3D%20%22e%22%20%26%26%20id%20in%20g%20%26%26%20destroy%28%29%3B%0A%20%20%20%20%7D%29%3B%0A%7D%29%28%22CB_ButtonCodeFragmentIdentifier_PasteIntoSearchBar%22%2C%20%60%7B%0A%20%20%20%20init%28cfmm%29%20%7B%0A%20%20%20%20%20%20%20%20cfmm.addEventListener%28%22selectstart%22%2C%20this%29%3B%0A%20%20%20%20%20%20%20%20cfmm.addEventListener%28%22unload%22%2C%20this%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20destroy%28cfmm%29%20%7B%0A%20%20%20%20%20%20%20%20cfmm.removeEventListener%28%22selectstart%22%2C%20this%29%3B%0A%20%20%20%20%20%20%20%20cfmm.removeEventListener%28%22unload%22%2C%20this%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20handleEvent%28e%29%20%7B%0A%20%20%20%20%20%20%20%20this%5Be.type%5D%28e%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20selectstart%28e%29%20%7B%0A%20%20%20%20%20%20%20%20e.target.ownerGlobal.addEventListener%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%22mouseup%22%2C%20this%2C%20%7Bonce%3A%20true%7D%0A%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20mouseup%28e%29%20%7B%0A%20%20%20%20%20%20%20%20var%20win%20%3D%20e.target.ownerGlobal%3B%0A%20%20%20%20%20%20%20%20var%20sel%20%3D%20win.getSelection%28%29%3B%0A%20%20%20%20%20%20%20%20sel%20%3D%20%21sel.isCollapsed%20%26%26%20sel.toString%28%29%3B%0A%20%20%20%20%20%20%20%20/%5C%5CS/.test%28sel%29%20%26%26%20win.docShell.messageManager%0A%20%20%20%20%20%20%20%20%20%20%20%20.sendAsyncMessage%28%22%25MSG%25%22%2C%20sel%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20unload%28e%29%20%7B%0A%20%20%20%20%20%20%20%20this.destroy%28e.target%29%3B%0A%20%20%20%20%7D%0A%7D%60%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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%3Ecustombutton://%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%3E%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20SearchBar%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABcAAAAVCAYAAACt4nWrAAADQklEQVQ4ja3V/08adxzHcf+t/bT90HTLtmT7F5Ym/XUsy4Uu7mdKYiawudaq04DWjVoFxWgRrU5txDL5clKkIDVBVpE77j5wgPW45LkfTMgOf1gb98Pjt/fr+fntbkAIgdfrxel04nA4bszpdOL1ehFCMHDf7cbn81GtVrEs68aq1So+n4/7bjcDkiRRq9UwTZNms3ljpmlSq9WQJIkBh8OBZVnXjlRVJZFIMB9eZPr3IMG5efb399E07T8fsCwLh8NxFe92uzQajZ5qtcrCUoRYKkv8TGfzbZtQ7oyxyBaBQIBarWa779ftdu1xIQRCCBRFYSES4ZWic37Z5fTCJK29Y+20RfC14NHzQ6ZnHqPrem/T71pc13V0XSeZTLL0UqbSucToWpxemCS1dzwrGwRfCyZljeHAArlcrrfpZ4ubpkm9XqderxNaWiZaUik0LjluXpLSLtg+axE5aTKT05jMaDxYP2RlZaW36Weapj2uqiqqqvI4OEe4JNh+a7B71mLz7xbLJ02CeZ3fMnUmUnUebBUIh0K9Tb9rcUVRUBSFpwth/AenPC00WDhuMF8QzB5pTMp1Rv5S8Wc0RqJpVldXe5t+tnin06FUKlEqldjc3MQ7/5zxpMJEWmU8pTB6oOCNnzPyUuFRQmVoNEAymext+nU6HXu8WCxSLBbJ5/OMjY8zHM0wvHeOJ36OZ++chwmFX+M1PE/WGRwcZGpqio1YrLf7t2vxQqHQc3h4yMPRMYb8YX56JjO8cczPUZmhsRnu3XOSTqdZW5wl+90tTrbXbNtCoWCPt9tt8vm8zdHREbFYjIDfz9TkJIGAn52dHaanp4nMz/Bm6Q7WzJdc/vAJb/6M2rbtdtsez+Vy7yUWi7H/7ReYE59C/A4Ev8J0fkRpY7l3Y4u3Wi2y2ex7y+9s0HbegqnP4MU3MPc16o+3iS4tks1mabVa9rgsyx8k92KLzvcfw8RtrL27HKw/4Y9gEFmW7XHDMMhkMh/s1e4Wdefn7AZ/IRQKMTs7SyaTwTCMq7gkSZTLZVRVJZVK3ZiqqpTL5avvudvtxuPxUKlUMAzjxiqVCh6PB7fbzYAQApfLhSRJ/8s/VJIkXC4XQgj+AW9cSYbbZ7hEAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28%28id%2C%20code%29%20%3D%3E%20%7B%0A%20%20%20%20var%20pref%20%3D%20%22CB.pasteIntoSearchBar%22%3B%0A%20%20%20%20var%20checker%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20var%20val%20%3D%20Services.prefs.getBoolPref%28pref%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20this.checked%20%3D%20val%3B%0A%20%20%20%20%20%20%20%20var%20has%20%3D%20id%20in%20g%3B%0A%20%20%20%20%20%20%20%20val%20%3F%20has%20%7C%7C%20init%28%29%20%3A%20has%20%26%26%20destroy%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20Services.prefs.addObserver%28pref%2C%20checker%29%3B%0A%20%20%20%20this._handleClick%20%3D%20%28%29%20%3D%3E%20Services.prefs.setBoolPref%28%0A%20%20%20%20%20%20%20%20pref%2C%20%21Services.prefs.getBoolPref%28pref%2C%20false%29%0A%20%20%20%20%29%3B%0A%20%20%20%20var%20gs%20%3D%20%22Cu.getGlobalForObject%28Cu%29%22%2C%20g%20%3D%20eval%28gs%29%3B%0A%0A%20%20%20%20var%20psi%2C%20psd%2C%20fsi%2C%20fsd%2C%20receiver%2C%20vars%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20var%20d%20%3D%20%22data%3A%2C%22%2C%20ref%20%3D%20gs%20+%20%22.%22%20+%20id%2C%20dref%20%3D%20d%20+%20ref%3B%0A%20%20%20%20%20%20%20%20psi%20%3D%20dref%20+%20%22%3D%22%20+%20encodeURIComponent%28code.replace%28%22%25MSG%25%22%2C%20id%29%29%3B%0A%20%20%20%20%20%20%20%20psd%20%3D%20d%20+%20%22delete%20%22%20+%20ref%3B%0A%20%20%20%20%20%20%20%20fsi%20%3D%20dref%20+%20%22.init%28this%29%22%3B%0A%20%20%20%20%20%20%20%20fsd%20%3D%20dref%20+%20%22.destroy%28this%29%22%3B%0A%20%20%20%20%20%20%20%20receiver%20%3D%20msg%20%3D%3E%20%7Btry%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20msg.target.ownerGlobal.windowRoot.ownerGlobal%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.BrowserSearch.searchBar._textbox.value%20%3D%20msg.data%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%7D%7D%0A%20%20%20%20%20%20%20%20vars%20%3D%20%28%29%20%3D%3E%20%7B%7D%0A%20%20%20%20%7D%0A%20%20%20%20var%20init%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20vars%28%29%3B%0A%20%20%20%20%20%20%20%20Services.ppmm.loadProcessScript%28psi%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.loadFrameScript%28fsi%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20g%5Bid%5D.receiveMessage%20%3D%20receiver%3B%0A%20%20%20%20%20%20%20%20Services.mm.addMessageListener%28id%2C%20g%5Bid%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20destroy%20%3D%20%28%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20vars%28%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.removeDelayedFrameScript%28fsi%29%3B%0A%20%20%20%20%20%20%20%20Services.ppmm.removeDelayedProcessScript%28psi%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.loadFrameScript%28fsd%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20Services.mm.removeMessageListener%28id%2C%20g%5Bid%5D%29%3B%0A%20%20%20%20%20%20%20%20Services.ppmm.loadProcessScript%28psd%2C%20false%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20checker%28%29%3B%0A%0A%20%20%20%20addDestructor%28reason%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20Services.prefs.removeObserver%28pref%2C%20checker%29%3B%0A%20%20%20%20%20%20%20%20reason%5B5%5D%20%3D%3D%20%22e%22%20%26%26%20id%20in%20g%20%26%26%20destroy%28%29%3B%0A%20%20%20%20%7D%29%3B%0A%7D%29%28%22CB_ButtonCodeFragmentIdentifier_PasteIntoSearchBar%22%2C%20%60%7B%0A%20%20%20%20init%28cfmm%29%20%7B%0A%20%20%20%20%20%20%20%20cfmm.addEventListener%28%22selectstart%22%2C%20this%29%3B%0A%20%20%20%20%20%20%20%20cfmm.addEventListener%28%22unload%22%2C%20this%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20destroy%28cfmm%29%20%7B%0A%20%20%20%20%20%20%20%20cfmm.removeEventListener%28%22selectstart%22%2C%20this%29%3B%0A%20%20%20%20%20%20%20%20cfmm.removeEventListener%28%22unload%22%2C%20this%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20handleEvent%28e%29%20%7B%0A%20%20%20%20%20%20%20%20this%5Be.type%5D%28e%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20selectstart%28e%29%20%7B%0A%20%20%20%20%20%20%20%20e.target.ownerGlobal.addEventListener%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%22mouseup%22%2C%20this%2C%20%7Bonce%3A%20true%7D%0A%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20mouseup%28e%29%20%7B%0A%20%20%20%20%20%20%20%20var%20win%20%3D%20e.target.ownerGlobal%3B%0A%20%20%20%20%20%20%20%20var%20sel%20%3D%20win.getSelection%28%29%3B%0A%20%20%20%20%20%20%20%20sel%20%3D%20%21sel.isCollapsed%20%26%26%20sel.toString%28%29%3B%0A%20%20%20%20%20%20%20%20/%5C%5CS/.test%28sel%29%20%26%26%20win.docShell.messageManager%0A%20%20%20%20%20%20%20%20%20%20%20%20.sendAsyncMessage%28%22%25MSG%25%22%2C%20sel%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20unload%28e%29%20%7B%0A%20%20%20%20%20%20%20%20this.destroy%28e.target%29%3B%0A%20%20%20%20%7D%0A%7D%60%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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
Отредактировано VORON (14-02-2024 18:59:05)
Отсутствует
VORON
Как странно, три custombutton:// ссылки, сцепленные, одинаковые, подряд.
Ссылки битые, с повреждённой процентной кодировкой. Повреждение в значении атрибута "name".
Совершенно непонятно откуда всё это взялось.
Попробуй удалить эту кнопку и создать новую, пустую.
Затем вытащи куда надо, и в CB-редакторе заполни текстовые поля вручную.
Сначала Инициализацию и Изображение.
Затем жмём кнопку (если она не в состоянии "checked"),
выделяем что-нибудь мышью на какой-нибудь простой странице,
и смотрим, появилось ли выделенное в SearchBar'е.
Далее уже попробовать заполнить Имя.
Отсутствует
Stkvsky
(proto => { var ds = proto.doSearch; proto.doSearch = function(str, where, e, params) { if (where == "current") where = "tab"; params.userContextId = ContextualIdentityService.create(str, "vacation", "purple").userContextId; ds.apply(this, arguments); } addDestructor(() => proto.doSearch = ds); })(customElements.get("searchbar").prototype);
Отсутствует