А как подсказку многострочной сделать?
А это окно можно фиксировать не по центру? Куда не выставлю, оно всегда в центре...
Вроде так работает в custom_script_all_win.js
(не в «... по событию "load" не раньше», а просто добавить в конец).
try {if (location == "chrome://global/content/commonDialog.xhtml") { let args = Array.from(arguments[0].enumerator, x => x.value); if (args.includes("Внимание !") && args.includes("Закрыть все вкладки ?")) { let bw = docShell.treeOwner.QueryInterface(Ci.nsIBaseWindow); bw.visibility = false; onpageshow = () => Promise.resolve().then(() => { moveTo(100, 100); bw.visibility = true; }); } }} catch {}
Отредактировано Dumby (08-06-2021 10:29:02)
Отсутствует
Dumby
Не...На все окна надо, типа...Окно переносится, но не фиксируется.
Хотя... Как это в один код объединить? Расположение идеально !
Отредактировано ВВП (08-06-2021 15:58:33)
Отсутствует
Отсутствует
vv07
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%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bcharset%3Dutf-8%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAFAklEQVR42n2VW2wUZRTHzzczuzt7nb3Mtt3ttluVpo01waImYmygkVgKxURDvERToiaaGGKawAsxJj40JvIgPBhQeEDBgpLGAok8oCCEmhoUaCMILdDLlu12u/fZnb3M5fs8S+IDIk6y+XbOzvebc87//50l8JCr5dAhIkgSZwqCYAJwjFJGdN1k5bKxtG0be9g+8u9A++goKWQyVlsg4OScTj8CZQrgZIxpxDByCMzQbFYRRLEaHxw0/xcYOnKE2J3OoGa3P87c7m7mdHZRiyVi8rwDGNMxwxQpl2dYoXCFy+X+FJPJ+PzQUPU/gdGJCaF2+3Y7DYf7NEnqMd3udrDZZMpxLsyOB0JMfLjKdD1vqmqMU5TLYi53hhLye2FgQLkP2HHwIJ8vlTqM1atf1Xy+fiqKjxmYFX543EDqDzFCaH3l6r00DM2s1ZJEVX/lFWUUG3pB7+sr3QM+cuwYh2tT2Wp9U2ltfc2DmXXZbHYbBu9oGszrOtMwxTq2geNIh8UCbouF3UKBbpdKSZZOn7PEYl9ylcpUdft2nYSPHrUbptmjNTfvrHi9z6yVJOfrHg80CwK7pKpwKpeDm+UyeHie9LpcsFmSmNdqpT9VKjCSy5n5TGbeOjv7NczOflMbHk4Rz+7dYT4aHdRbWt6vCUJos8/Hf9jQwLodDjZfrbJTmQz3Wz4PMs/DgCyzHkkiWBs9ls/TL1IpklLVshCPX2DXr38iZLPXSOOePd2VVat26MHgRo1ST5fdDm81NMAWnw+asLQFzGSuWCQuBHa43cBj5heLRTaSTrOzikLKlJokk7nFpqd3SYXCWdJ2+HD/it+/S/N6u9FvNhGb3onQV2SZeykQYG2iyNDUBFUmJfztoqLA0WSSjeOaq4vFcRQKhUWYnv40QMgoCR44sDWPQMPr7QBBsKItqEXXyQa/n3uvtRVewDJRBGJQCtOqSkficXI4Hoe4rgPgy6AOLBbjcOPG5y5BGCFNe/duSgcCu0xZXo1AkTcMFkZR+7HsNxC4xutlVhSkLvRypcJOLy/DkcVFmFJVVrGhFzjOxAzvwrVrn0mEfE96R0aeGte0HTQYfJHxvLsVN6Mw8HI4zJ7w+VgVQWlNIw6MB7GnmVqNIJQeTyTYFVRfQ8PDysoduHr1o06v9wzZcvJk5OdE4u2aLL/LWSxN9VI/iEbZc7JM8qbJfllZIZPZLAmKImwIhVgXWipeLrNvFxfpgViMZUulGsRiEzA19XFPe/skkYaHHcDzvarPtxM8nu6+lhb7YFsbtNjt5DJ68Ie5OZhMpUB2OmEAX7Q5HAY7Kn0ahflqZsZMLy0twczMd7CwsB/GxhKkbWiIr1arEcXheKcciWxtiUSia5ubrWgTcj2XY3/lcrRYq4GA91GPhz0dDIIXe3clm6VXFxbyRjw+Djdv7gdKJ+D48eq9s2zt7LSgut36xo2DEAr1in5/M7HZRA2PmsnhycSM6seUUEot6BQevacrSt5YXv4D7t4dRVF+hBMn8vdNG7Jvn42NjT0JjY2bEPo8BAKPgsvlA7vdikCC44uBjl6p1coISEA2OwnJ5GlIJC5gLA3j4+zBAbt+vYUTxRDz+9cwn+9ZkKQuBAbr/sSSKG5UoFSaQ9hlyGQuYewWqKoC58+zB+bhP5ewbh1PGxtFarV6cB56MeQFwxCxYAPFK+J9gaRSBVYqqfhdg3Pn7vs7+BtcvogzqcGZngAAAABJRU5ErkJggg%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/*Initialization%20Code*/%0A%0A%0Aself.image%20%3D%20%22data%3Aimage/png%3Bcharset%3Dutf-8%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAFAklEQVR42n2VW2wUZRTHzzczuzt7nb3Mtt3ttluVpo01waImYmygkVgKxURDvERToiaaGGKawAsxJj40JvIgPBhQeEDBgpLGAok8oCCEmhoUaCMILdDLlu12u/fZnb3M5fs8S+IDIk6y+XbOzvebc87//50l8JCr5dAhIkgSZwqCYAJwjFJGdN1k5bKxtG0be9g+8u9A++goKWQyVlsg4OScTj8CZQrgZIxpxDByCMzQbFYRRLEaHxw0/xcYOnKE2J3OoGa3P87c7m7mdHZRiyVi8rwDGNMxwxQpl2dYoXCFy+X+FJPJ+PzQUPU/gdGJCaF2+3Y7DYf7NEnqMd3udrDZZMpxLsyOB0JMfLjKdD1vqmqMU5TLYi53hhLye2FgQLkP2HHwIJ8vlTqM1atf1Xy+fiqKjxmYFX543EDqDzFCaH3l6r00DM2s1ZJEVX/lFWUUG3pB7+sr3QM+cuwYh2tT2Wp9U2ltfc2DmXXZbHYbBu9oGszrOtMwxTq2geNIh8UCbouF3UKBbpdKSZZOn7PEYl9ylcpUdft2nYSPHrUbptmjNTfvrHi9z6yVJOfrHg80CwK7pKpwKpeDm+UyeHie9LpcsFmSmNdqpT9VKjCSy5n5TGbeOjv7NczOflMbHk4Rz+7dYT4aHdRbWt6vCUJos8/Hf9jQwLodDjZfrbJTmQz3Wz4PMs/DgCyzHkkiWBs9ls/TL1IpklLVshCPX2DXr38iZLPXSOOePd2VVat26MHgRo1ST5fdDm81NMAWnw+asLQFzGSuWCQuBHa43cBj5heLRTaSTrOzikLKlJokk7nFpqd3SYXCWdJ2+HD/it+/S/N6u9FvNhGb3onQV2SZeykQYG2iyNDUBFUmJfztoqLA0WSSjeOaq4vFcRQKhUWYnv40QMgoCR44sDWPQMPr7QBBsKItqEXXyQa/n3uvtRVewDJRBGJQCtOqSkficXI4Hoe4rgPgy6AOLBbjcOPG5y5BGCFNe/duSgcCu0xZXo1AkTcMFkZR+7HsNxC4xutlVhSkLvRypcJOLy/DkcVFmFJVVrGhFzjOxAzvwrVrn0mEfE96R0aeGte0HTQYfJHxvLsVN6Mw8HI4zJ7w+VgVQWlNIw6MB7GnmVqNIJQeTyTYFVRfQ8PDysoduHr1o06v9wzZcvJk5OdE4u2aLL/LWSxN9VI/iEbZc7JM8qbJfllZIZPZLAmKImwIhVgXWipeLrNvFxfpgViMZUulGsRiEzA19XFPe/skkYaHHcDzvarPtxM8nu6+lhb7YFsbtNjt5DJ68Ie5OZhMpUB2OmEAX7Q5HAY7Kn0ahflqZsZMLy0twczMd7CwsB/GxhKkbWiIr1arEcXheKcciWxtiUSia5ubrWgTcj2XY3/lcrRYq4GA91GPhz0dDIIXe3clm6VXFxbyRjw+Djdv7gdKJ+D48eq9s2zt7LSgut36xo2DEAr1in5/M7HZRA2PmsnhycSM6seUUEot6BQevacrSt5YXv4D7t4dRVF+hBMn8vdNG7Jvn42NjT0JjY2bEPo8BAKPgsvlA7vdikCC44uBjl6p1coISEA2OwnJ5GlIJC5gLA3j4+zBAbt+vYUTxRDz+9cwn+9ZkKQuBAbr/sSSKG5UoFSaQ9hlyGQuYewWqKoC58+zB+bhP5ewbh1PGxtFarV6cB56MeQFwxCxYAPFK+J9gaRSBVYqqfhdg3Pn7vs7+BtcvogzqcGZngAAAABJRU5ErkJggg%3D%3D%22%3B%0A%0Athis.onclick%20%3D%20this.oncontextmenu%20%3D%20function%28event%29%20%7B%0Aif%20%28event.button%20%3D%3D%201%29%20%7B%0A%20if%20%28Services.prompt.confirm%28null%2C%20%22%u0412%u041D%u0418%u041C%u0410%u041D%u0418%u0415%20%21%22%2C%20%22%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%3F%22%29%29%20%20%0A%09%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...gBrowser.tabs%5D.forEach%28%28tab%29%3D%3E%20gBrowser.removeTab%28tab%29%29%3B%20%0A%0A%7D%0A%0A%20if%28event.button%20%3D%3D%200%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%7B%0A%20%20gBrowser.removeTab%28gBrowser.selectedTab%29%3B%0A%7D%0A%20%20%20%20%20%0Aif%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%7B%0AgBrowser.selectedTab%20%3D%20Array.from%28gBrowser.tabs%29.reduce%28%28prev%2C%20curr%29%20%3D%3E%0A%09curr.closing%20%7C%7C%20curr.selected%0A%09%7C%7C%20curr._notselectedsinceload%20%21%3D%3D%20false%0A%09%7C%7C%20curr.lastAccessed%20%3C%20prev.lastAccessed%0A%09%09%3F%20prev%20%3A%20curr%0A%2C%20%7B%7D%29%3B%0A%0A%7D%20%20%20%20%20%20%0A%7D%3B%0A%0Athis.oncontextmenu%20%3De%3D%3E%20%7B%20e.button%20%26%26%20%21e.ctrlKey%20%26%26%20e.preventDefault%28%29%20%7D%3B%0A%20%0Athis.tooltipText%20%3D%20%22%u041B%u041A%u041C%3A%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%5Cn%u0421%u041A%u041C%3A%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%5Cn%u041F%u041A%u041C%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%u0441%u044F%20%u043D%u0430%20%u043F%u043E%u0441%u043B%u0435%u0434.%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%3B%20%20%0A%0Avar%20style%20%3D%20custombutton.buttonGetHelp%28self%29.replace%28/id/g%2C%20_id%29%3B%0Avar%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28style%29%29%3B%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Asss.loadAndRegisterSheet%28uri%2C%200%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0A%0A%0A%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%0A%23id%3Ahover%3Anot%28%3Aactive%29%20%3E%20.toolbarbutton-icon%7B%0A%0A%09list-style-image%3A%20none%20%21important%3B%0A%09object-position%3A%2020px%200px%20%21important%3B%0A%09background-position%3A%20center%20%21important%3B%0A%09background-repeat%3A%20no-repeat%20%21important%3B%0A%20%20%20%20%20%20%20%20%0A%09background-image%3A%20url%28%22data%3Aimage/png%3Bcharset%3Dutf-8%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAE80lEQVR42n2UW2hUVxSG1z7XOSfJXE5mch0TNcZIFWxa6wW0pSha4yiiUi81gSpYfPFFKYRSqA9K+yK+tfQlFkwwEqpoVUytMWoNpMZGamlriG00Ok4ymVsy58y57L26RyrU1nbDeVl7n4//3+vfiwQCAXjZOl1eTgKSJEieJxFKBYaIDiHURPS2ZbMI/7HIP4EXa2tJOpNRDFUtKREEQ6Y0DIyVFHkeIWkOnEoxllMlqbA1k6H/Czzj9xNd1yO6bb9Shtgsy/JCASAqUqoDossYm3Q9734W8U5aFH+K6/rjfYlE4aXAO1VV0lg+31hD6bqgba/SBKGRKEpYYKyUWxaB20VBKIBtZzzLepgVhKGUrvfyvR/e4opfAJ6sqxPNVKqp2XXfNWx7vYrYILmuLjmOSBgjHAYEkYEgABUEpIQ4tucl8oR8n5OkHq6+f7mmzTwD9s+fz11BlZrPvzc7nd4O0Wiju3SpRlQVnNFRCA8MIFeFRWi+oYHYS5aAVFaG7sgI9V+/nkgiXh1TlC8sUbzbJssuuVZXpzHPWxUtFA4ZpvmGuWVLiX/HDpBqajA/OAjpc+cgcO0aQDBIrO3bIdDSgkooxMwrV0A8fpzmJif/GFXVEw8I+epDRZkkXaFQTb0ottU5zgdyoVBd2LtXrDhwALUFC9B5+hSnzp8XMgMDIIXDEI7FMLhyJWGmydKnTjF6+DCh4+PmuCz3/4z4yZQs3yPdtbXN8/P5gxWO8w7atj+3ejVEWlshtHEjiIEAOokEzDx4QMTSUihragJBljF34wYmOztR7+zk95CnSUJG7iO2TxnGd+RKY+P6SDzeHrLtZqBUpbqG06vehPKtW4Xwpk2oRCLFEJPih5Ri9uZNSHR1oe/MGRCSSRB5s7IAj34DOEorK3vIherqbZGpqfag6zZJAIrHDziKQtxdu4S6ffvAWLHiORCcZJI97uoi9rFjgGNj4ANA3lE2DfD4F4BjxO/vJKej0ZbKRKI97HmLOdDnSRK6s2YRafduqNu5E8r4XT5X6JkmPr10CeIdHaD09aFmmsCBlCscvwfwGTWMbnI5Fntd6u09GGFsrchYGc6dS7CtDWo3b8bQokVIbZtwZUTUdaIYBtrpNOFQNsFta7zTgm3TCYDRHwE+8i1e3Eu+3bMn6nR3vx+xrL2yKFZ53Gr9/v0YWbaMeDMzONHXR1LDw8QXiUDVmjVYOm8e2MkkPjp5kplHj6I1OWk/BBi4C/Bx7bp1w6TDMHRu9e3y6elDfoBmtbVVm80Vatx2emgIxnp6gF69Cr6KCvC3tWHNhg0gahomLl7E1JEjdCKReHIf4NQYwOcdgUCcfNrUJNqWFS1LpfbUz8xsq5wzp16LxRQeE2Ldvo3u4CDzstliXIje0IDi2rWgBoNg3rrF0v39mSeue/NXDmNc5ZeBQOHZW17iurLLp0vMstqqudqgrteqhPhEfn+i5wF38Kwx/A0zUBSkkkSnHSeTcN3b4wA9vCkXTgQCmRemTWcup55FfLUSoIVDV5YDzC0FCGk8SlIxgxzqArg2gMkB8RTAcIKPzzhAP68lv+GP4F/zcHM2K6uiWG0w9pqBuJzvLOTASDGf3BLjP+b4SPmdw4amAAZ5bSTPa2f/gr10Ym+0LLGKUp9KqV/lI4GXgh7PJw+iJwLwDEN2gpBsHjFfzPrXf4MV15+m8XiKOdVncQAAAABJRU5ErkJggg%3D%3D%22%29%20%21important%3B%7D%0A%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отредактировано ВВП (09-06-2021 10:58:07)
Отсутствует
Здравствуйте! На новых версиях лисы, не работает расширение CloseTab. Может умельцы сварганят кнопку?
Таже проблемма. Ещё раширение Bat Elolc барахлит. Не посмотрят ли умельцы
Результаты поиска для "CloseTab" – Дополнения для Firefox (ru)
Отсутствует
Нет поиска сразу, сначала в поиске появиться . А сразу искать в Duck ? Забыл где рихтануть..
Типа это что ли? (ответ).
В custom_script_win.js, и вот тут как раз в «... по событию "load" не раньше».
Собственно, эквивалентно такой правке
%FOX%\browser\omni.ja\modules\UrlbarSearchOneOffs.jsm
/* if ( userTypedSearchString && engine && (event.shiftKey || where != "current") ) { */ if (engine && !event.shiftKey) {
Отсутствует
Dumby
Собственно, эквивалентно такой правке
%FOX%\browser\omni.ja\modules\UrlbarSearchOneOffs.jsm
Класс! Тонкий ход! Сдохла кнопка "Увеличить изображение"
/*Initialization Code*/ addEventListener("popupshowing", { imgZoom: 190, // на сколько увеличить изображение из меню scrollZoom: 20, // на сколько увеличивать/уменьшать колесиком мыши scrollTop: 1, // или -1, переключение направление прокрутки для увеличение колёсиком receiveMessage(msg) { var container = document.documentElement .appendChild(document.createElement("div")); addDestructor(() => container.remove()); var image = container.appendChild(document.createXULElement("image")); image.style.cssText = "width: 100% !important; height: 100% !important;"; image.setAttribute("validate", "never"); var st = container.style; var dz = this.scrollZoom/100 * this.scrollTop; var currScale = 1, x, y, initialZoom = this.imgZoom/100 - 1; var hide, props = ["width", "height", "left", "top"], p = n => n + "px"; var set = (...args) => props.forEach((prop, ind) => st[prop] = p(args[ind])); (hide = () => { st.cssText = "position: fixed; display: none; z-index: 2147483647;"; currScale = 1; image.src = null; })(); container.onwheel = (e, ds = e.deltaY > 0 ? -dz : dz) => { if (currScale < .15 && ds < 0) return; st.transform = `scale(${currScale += ds})`; var {width, height, left, top, bottom, right} = container.getBoundingClientRect(); if (height < innerHeight) { if (top < 0) st.top = p(y -= top); if (bottom > innerHeight) st.top = p(y -= bottom - innerHeight); } if (width < innerWidth) { if (left < 0) st.left = p(x -= left); if (right > innerWidth) st.left = p(x -= right - innerWidth); } } (this.receiveMessage = msg => { var {src, width, height, left, top} = msg.data; image.src = src; left -= mozInnerScreenX; top -= mozInnerScreenY; set(width, height, x = left, y = top); st.display = "block"; container.onwheel(null, initialZoom); window.addEventListener("mousedown", hide, {once: true, capture: true}); })(msg); }, handleEvent(e) { if (!gContextMenu.onImage) return; var menuitem = document.createXULElement("menuitem"); menuitem.setAttribute("label", "Увеличить размер"); menuitem.className = "menuitem-iconic"; menuitem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADZElEQVR42oXSe0xbVRwH8N8597a35e7SAmUFukGhY66AMiNzw4GvTCQLCssc4pQsmTOa+ERMlrktW1zigpnEuWn8x2eMmiVGMBDCFjS+cJHEDIk8RoSNV1+3tLWX3t72nnO8sETJFrfvP7/k5Pw+Ob9fDoLrYi8ow9GFUbq+5aRLrGraqQcX6hlF2wkFEWn6EDIJAyQy9+3VT58cWb6PrmvmjGZS/FSHlxbXtbtLobGqJlPKMhNepWb0V8hKpi8FNd/gzCCogbdmvtg/8C9gz9+Eor5x5nn2tDOZ98Dx2i3C/uYai9mOGCxiDQIIg1/PgUCEhyvDMox9PXYBkPzaaoAzAFL0yle7ShtqO/eWJ9w1vJ1oGsVzYhTNATMQG4Q1G40ldDw6PB339fs7VgMmA0jnHfioo6F9Z3tDYYJzKSZKMYcDvAILiICfZUNYEYFixMKpKBk8MfTTasBsACnngU/6Wg4+VL/VFSOmBHAYY1BAhzAvgmyMEIkh0EUOBD1Eu49eStwA5D3z4TcPv9TYdHvxEhXSGgaEIMkJkKAS+ONmSKYolOVqMBlRSd8bv8v/AQXlJoiHUE5rZ1tFa/Nhj1uVrCaNMoQxYSaIqDxAGqAuQ2XZ1iS8HUTpkZMXe1eATOdtiCcJblGe1a3PnWp0uEvfv3tbeX5RhSet/q3wxh6xgAncZUmw2hxEryQx9/LHE7I2RV5HNudGFAtcZsuQd919u/kiz56JOwobcjd6xerqKnB4HIB4RvMzCM1DGj8X0GD64pL2Xdf850z+4djKC8wl24XUpj1P75sdfe/+sSHoq3uQnSuwa+s2Vy5uubd2jQWUTAYchJK8HpyIzvv7p/rMkV/OzPeeGEWi+x6LufiR573h8VO7Zr4n9fEZNeiqXHOofFvPsKPkS1fKsX5JU6uNZQh8Wh/hRcuvOC3/fLXrcGj52yOo7zzU9udvbzbN9uglggK2MhsnvfiE0tY9tfed7vM98D+x53tx1DdG0Z2b97Ejf3SRSiGGCysyENvdoipZa4+/8NmPp8+N+Ei2ZEVpQhG71rdcqFFozD+xcoQugFUvlDS8wWsl8Uebk5C79ujjHwyc6R/309ysDBRauEzhJkG9ErAdG0xEe6yVkwqcr+549/zZgcmQ7pAEkH2TDG6RfwCoJI0uEWJP5QAAAABJRU5ErkJggg=="); menuitem.setAttribute("oncommand", "handleCommand();"); e.target.append(menuitem); addDestructor(() => menuitem.remove()); menuitem.handleCommand = () => this.cmd(); this.handleEvent = () => menuitem.hidden = !gContextMenu.onImage; }, cmd() { var msg = "CB:GetImageScreenRectForMosuseZoom"; var code = `(targetIdentifier => { var image = ChromeUtils.import("resource://gre/modules/ContentDOMReference.jsm") .ContentDOMReference.resolve(targetIdentifier); var mm = image.ownerGlobal.docShell.messageManager; var bu = mm.BrowserUtils || ChromeUtils .import("resource://gre/modules/BrowserUtils.jsm").BrowserUtils; mm.sendAsyncMessage("${msg}", Object.assign( {src: image.currentSrc}, bu.getElementBoundingScreenRect(image) )); })(`; messageManager.addMessageListener(msg, this); addDestructor(() => messageManager.removeMessageListener(msg, this)); (this.cmd = () => { var {osPid} = gContextMenu.actor.manager.browsingContext.currentWindowGlobal; if (osPid == -1) osPid = Services.appinfo.processID; for(var ind = 0, len = Services.ppmm.childCount; ind < len; ind++) { var pmm = Services.ppmm.getChildAt(ind); if (pmm.osPid == osPid) break; } pmm.loadProcessScript("data:;charset=utf-8," + encodeURIComponent( code + JSON.stringify(gContextMenu.targetIdentifier) + ")" ), false); })(); } }, false, document.getElementById("contentAreaContextMenu") || 1);
Отредактировано ВВП (09-06-2021 14:11:02)
Отсутствует
Dumby
Кажись еще один код сдох ? Процесс - мульти!
// Проверка орфографии
addEventListener('click', e=> {
if ( e.target.tagName && (e.target.tagName == 'TEXTAREA'|| e.target.tagName == 'INPUT'))
e.target.setAttribute('spellcheck', 'true');
}, );
Отредактировано ВВП (11-06-2021 13:59:35)
Отсутствует
Подскажите пожалуйста, в чем проблема и как поправить.
Созрел наконец то для ESR [?] 78.11.0 . Установил по рекомендации, custom_buttons-0.0.7.0.0.17-fx-paxmod
И Усе пропало)))) Из темы с готовыми кнопками, код открывается в поисковике или выдает ошибку.
Попытался поставить свои старые кнопочки из файла, тоже ошибки
Мне много не надо. Хотя бы большую часть, самых необходимых кнопок
Автоматически добавлять выделенный текст в SearchBar
Autocopy
Compact Menu
Context translate
Copy links
FF Exp Imp CB
Google translate
History Export
Linkification
Proxy
Save snapshot to html
Save
Search and open
Stf
Stop
TunePanels
URL
User-agent change
Закрыть вкладки или вкладку
линк мастер
Список расширений
Отредактировано vv07 (12-06-2021 03:39:18)
Отсутствует
Есть скрипт Url-tooltip
(function() { if (!window.gBrowser) return; var frameScript = function() { addEventListener('pageshow', function(event) { var documentElement = event.target.documentElement; documentElement.addEventListener('mouseover', function(event) { var element = event.target; var elementsWithTitle = []; while (element != documentElement && !element.href) { if (element.hasAttribute('title')) { elementsWithTitle.push(element); }; element = element.parentNode; }; if (element.href && !element.checkedTooltip) { element.checkedTooltip = true; if (element.getAttribute('href') != '\u0023' && element.protocol != 'javascript:') { if (element.title) { element.title += '\n' + element.href; } else { let length = elementsWithTitle.length; if (length > 0) { element.title = elementsWithTitle[length - 1].title + '\n' + element.href; } else { element.title = element.href; } }; for (let elem of elementsWithTitle) { elem.removeAttribute('title'); }; }; }; }); }); }; var frameScriptURI = 'data:, (' + frameScript.toString() + ')()'; window.messageManager.loadFrameScript(frameScriptURI, true); })();
Как убрать перенос длинных ссылок в две строки?
И как его присобачить через user_chrome_files от VitaliyV. Во все три custom_script добавил, а толку нет?
На форуме
voqabuhe
А вообще скрипты *.uc.js подключить через user_chrome_files можно или для user_chrome_files только спец скрипты из этой темы?
На форуме
А вообще скрипты *.uc.js подключить через user_chrome_files можно...
Можно через этот загрузчик для custom_script_win.js или просто в конец custom_script_win.js добавить.
Я загрузчик подрезал чуток и путь у меня изменён, скрипты лежат в папке scripts3 рядом со скриптами комплекта. С дефолтным путём так:
/* ************************************************ */ // Здесь может быть ваш код который сработает по событию "load" не раньше (() => { var loadscript = (relpath, obj) => { try { Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, obj, "UTF-8"); return true; } catch(e) { } return false; }, load_scripts_by_url = { browser: win => { setTimeout(() => { loadscript("favicon_in_urlbar.js", win); loadscript("search_engine_icon.js", win); loadscript("urlbarhistorydropmarker.js", this); loadscript("tabs_focus.js", win); loadscript("tabstoolbar_doubleclick_opennewtab.js", win); loadscript("contextmenuopenwith.js", this); loadscript("pageInfo.js", win); loadscript("restart_item_in_menu.js", this); loadscript("add_a_bookmark_to_the_bookmarks_menu.js", win); }, 0); }, }; load_scripts_by_url.browser(window); })(); /* ************************************************ */
Отсутствует
Dumby
А можна на эту кнопку предупредиловку сделать? На прокси.
(ps => { this._handleClick = () => ps.setIntPref(s, ps.getIntPref(s, 2) ? 0 : 2); var s = "network.proxy.type"; var toggleImage = val => { this.icon.src = (val = ps.getIntPref(s, 2)) ? this.image : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFklEQVR42mO0DwpKaG9vL2VmZmb8+/fvPwY84P///2DMwcHBcuHChZcp4eE5jJeePn2hIyUl/uDTJwZuLi4GFhYWBmZsmqH073//GD5+/MigIijIEJmTM4Px1Z8/H86dP8/vYWrKQAoAuSS1omIp46u/fz9cunSJ38XQkCQDvgINyCouXsL49v//D+cvXCDZgBe/fzOUl5cvYfwMNODA8eP8vlZW5BnwDWjAvhMn+H0sLUky4Mn37wzV1dUQAw6fPcvvbmJCkgEPPn9mqK+vX8L4E2QAGWFw5/17hubm5iWMv4AGnL55k99aQ4MkA26/e8fQ0dGxlPHxt28vZDg5xUGCf4H4JxD/AOI/f/8y/AMmmt/AwAJhYCplYGRkZPjz5w9YnJeXFxSICxhN3N3zSkpK8kH6371791UOCHR0dIR+/frFAMIgDaBE8+rVq78XL158BBT7xMPDw/f69evvrXV1pYxAjSDMA8R8wWlphfn5+SlAM/iB6R1sI0jz169fwfjs2bN3m5qaWu+fObMO6uAvjDA/uUdFle1YurQTxP4KxL+AmAnkFSAGuoxBREiIQRDIfvjlyxcFXl5QnF9hgNoOAUJCdsuWL1/m4+YmzQU14BdUig2IWYD4LTAsgDn31KT6+hAg9zGqARAgJ6OvH2Fubm6hrq4uC/QrFzDA/r958+Yz0P/3Dx8+fOjPy5drgepewzQAAJP3DZ3PnU32AAAAAElFTkSuQmCC"; this.tooltipText = val ? 'Автопрокси' : 'Без прокси'; BrowserReload(); cbu.setPrefs("network.proxy.autoconfig_url", val ? "resource://chrome/proxy/proxy2.pac" : "resource://chrome/proxy/proxy2.pac"); cbu.setPrefs("intl.accept_languages", val ? "fr" : "ru"); cbu.setPrefs("browser.zoom.full", val ? true : true); cbu.setPrefs("media.autoplay.default", val ? 5 : 5); } toggleImage(); ps.addObserver(s, toggleImage, false); addDestructor(() => ps.removeObserver(s, toggleImage)); })(Services.prefs); this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() };
Отсутствует
А просто сделать всегда включенной?
Я посмотрел на синтетической странице,
и у меня и так работает в <textarea>.
А если выставить layout.spellcheckDefault
в значение 2, то и в <input> тоже.
Ну, конечно, если у них арибут spellcheck
специально не установлен в false.
Какой-то заложенной возможности
автоматически это игнорировать найти не смог.
А можна на эту кнопку предупредиловку сделать?
this._handleClick = () => Services.prompt.confirm(null, "Title", "Msg") && ps.setIntPref(s, ps.getIntPref(s, 2) ? 0 : 2);
как поправить
Никак. Годы (!) просиживания в уютной благодати необновленчества,
(при полном отсутствии интереса к изменениям в браузере) нельзя поправить.
Как убрать перенос длинных ссылок в две строки?
Никак. Нельзя убрать то, чего нет.
Никакого «переноса длинных ссылок в две строки» в коде не предусмотрено.
Есть браузерное ограничение ширины тултипа max-width: 40em;
можно задать своё, побольше.
А вообще скрипты *.uc.js подключить через user_chrome_files можно
Можно, если есть хоть какое-нибудь элементарное понятие,
а не «Во все три custom_script добавил».
Если добавлять Url-tooltip (в custom_script_win.js) в конец,
то следует убрать проверку на !window.gBrowser
Иначе, запускать из места, которое русским языком прокомментировано:
«// Здесь может быть ваш код который сработает по событию "load" не раньше»
custom_buttons-0.0.7.0.0.17-fx-paxmod не ставится на 29 луну, на 28 идет.
Как такое даже в голову могло прийти!
Дичь какая, ставить это на Pale Moon.
Вот, тяп-ляп, попробовал подкрутить оверлейное, только для PM29.
Извлечь из zip-папки и поставить.
А можно ещё этот скрипт изменить так, чтоб открытое окно "pageInfo" переключалось сразу на пункт "Разрешения"
Ой, там мне что-то приглючилось, что Ctrl+I с fluent'а, а он же с атрибута key.
Как-то так, наверно
(async n => { var menuitem = n("menu_pageInfo").cloneNode(false); menuitem.id = "context-" + menuitem.id; for(var attr of ["key", "command"]) menuitem.removeAttribute(attr); menuitem.setAttribute("oncommand", 'BrowserPageInfo(null, "permTab");'); n("context-inspect-a11y").before(menuitem); })(id => document.getElementById(id));
Отредактировано Dumby (13-06-2021 02:30:37)
Отсутствует