А куда подевался князь-анархист? Вроде он спец по about:addons . Теперь кнопка не работает "//Добавление на вкладке дополнения в меню расширений дополнительных пунктов" . Там в mozapps опять что-то рихтанули...
Да, а как независимо продублировать кнопку с одним параметром? Типа:
ps => { var s = "network.proxy.type"; this._handleClick = () => ps.setIntPref(s, ps.getIntPref(s, 0) ? 0 : 1); var toggleImage = val => { this.icon.src = (val = ps.getIntPref(s, 1)) ? this.image : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAADaElEQVR42pWTD0zUZRjHP7+fd3CAHhGFZInIQJ1/IKLWzMqh6eWIgQP/EC2RmXOuP+JMobCl2y3L2i3WIf5ZWI0xZWuizn8XmDP5oxxXrT9LvQYmIkOJDgWBH/frubu4EVubPduz3/s+7/v7vM/7fZ5X4f/bY+IPiLvFB0aDyuigksyXVJTI2wz0hTLB60UPrsk4SOlnWDcTavYw+H0JZ3/5F6ieV1an6199JsNo8Xvio3/q47JR/okZqXM3bX4hf7uN5nNjQRsFZKe8Ga72QPJkiDSBORTCQwKIIU1SE8alDsiZA+fbrmxd+/rbu2msDYK+JrdguV5TQW51KO29I2TMVHnUDHGRokaYD6DTP+T7KjjcGpZEI01/uLaUlhR/QtOZIOgIKwqy9MN7WPS5CVenTs5shXmxkBAFMRNBlW13BsUFdvKyRv7jBlo6Wt/ZtKX4AxocY0GFArITZTV19nbrj5ijFebI9eKlOA+Gg8kgymmB652+qvGRxUDvPVfphqISKxdOB0FHWVmYqR+yo5Sa6mjTFxMfqJhPI7MpkJHm9cMGejxa2IcZBqLDne+vKyrewflvxmu0xwf6mKYRCwlqvLRKGAbFgOpn9jHEXwzSwPXhlXmrjCTHtpSVWLe9xZn68RlVCMgoIOZLz8UQzkRCBGb0g7q5K7MJEjVqD2elGegfbq91nLBmU7M/CGqgYNN8vdKG8wYiIkyZFNDF3426L6azrwUWxCnkp+iim0LNT2C70HadvrKplNn8oE9ZuvjN36oq6e6P5sqt21KdHqLCIngmLk60CKHiok5lK2x7TqHgicABey/B1lO4PTevFeF4N/gM9CfLFxITobA2rYvXjqSTMWMdK+am+qv18mHavb1MW5IGB3NgeEROb/RKRmojHRzj8rdBkJiUiMFMkmYe/eLQbl5NzfRHu+5A7C6q+Zk8UwrssgQ6/7t2L+/VKVJl5Xf+vDYWFCF+186LqRt/PJjHvMmJMvfwpcvoXnNggYuuabnMAktS4Il0eDR21KvN3FCddP4wFvRfpj7L1OKdLLSmm2dAXjKsEZ2cUoA3jitn5dJ7abXfD4hEop4qZ1nVkofmJrEvC5bPhtpfIbsKGxdbNuMovC+Qz6YwaVU12dufT3l6OosSFBF6aD0nnPtx7ZTlc38DDl9EFHoV7LkAAAAASUVORK5CYII="; this.tooltipText = val ? 'Все сайты через Socks5' : 'Без прокси'; } toggleImage(); ps.addObserver(s, toggleImage, false); addDestructor(() => ps.removeObserver(s, toggleImage)); })(Services.prefs); this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() };
Отредактировано solombala (07-12-2019 13:51:31)
Отсутствует
теперь бы дополнить строкой по замене двух запрещенных символов : и ? на ׃ и ‽ соответственно
Ну, я сейчас дополнил батарею реплейсов, вот так:
var re = /(.+) (\(.+\)) \[(\d{4})[^\]]+\] (.+ \((.+)\))( .+)?/; var query = {active: true, currentWindow: true}; browser.browserAction.onClicked.addListener(async () => { var [tab] = await browser.tabs.query(query); var {title} = tab; re.test(title) && navigator.clipboard.writeText( title .replace(re, "$1 $2 ($4) ($3)") .replace(/ \/ /g, " - ") .replace(/: /g, "׃ ") .replace(/\? /g, "‽ ") ); });
data:text/html;charset=utf-8,<title>Рэмбо: Последняя кровь / Rambo: Last Blood (Адриан Грюнберг / Adrian Grunberg) [2019, США, боевик, триллер, приключения, HDRip] Dub (iTunes) :: RuTracker.org</title> data:text/html;charset=utf-8,<title>Куда ты пропала, Бернадетт? / Where'd You Go, Bernadette (Ричард Линклейтер / Richard Linklater) [2019, США, драма, комедия, детектив, BDRip] Dub (iTunes) :: RuTracker.org</title>
А другая с этим this._handleClick = () => ps.setIntPref(s, ps.getIntPref(s, 0) ? 0 : 1);
Что значит «А»? Строка символ-в-символ точно такая же,
как и в коде под спойлером, не считая начальных пробелов.
Отсутствует
Dumby все работает
вот расширение без подписи, иконки есть https://yadi.sk/d/ljDkR5awNv5OSQ
Отсутствует
solombala, у меня работает, и путь примерно такой resource://FF/proxy.pac.
Правда в 73 не знаю, может и не пашет.
(()=>{ //Задать путь к файлу в папке chrome. .... - forum.mozilla-russia.org/viewtopic.php?pid=775488#p775488||775536#p775536 (({io,dirsvc,prefs})=>{ var substitution="FF",dir="CurWorkD"; var rph=io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler); addDestructor(reason=>reason[5]=="e"&&rph.hasSubstitution(substitution)&&rph.setSubstitution(substitution,null)); if(rph.hasSubstitution(substitution))return; rph.setSubstitution(substitution,io.newFileURI(dirsvc.get(dir,Ci.nsIFile))); })(Services); })();
Отредактировано func4ptch4 (08-12-2019 00:24:20)
Отсутствует
Извиняюсь this._handleClick = () => ps.setIntPref(s, ps.getIntPref(s, 0) ? 0 : 2);
ручная настройка ...
«ручная настройка» это 1
Хотелку объяснять, я так понимаю, не будешь.
Ну вот, например, нечто псевдоуниверсальное.
Задаёшь названия и иконки для всех вариантов,
затем правишь var config = […, …];
Два значения, между которыми переключаться.
Порядок важен: первое будет использоваться как то,
на которое пойдёт переключение, если текущее состояние
настройки какое-то другое третье (не первое и не второе).
(data => { var config = [0, 1]; var pref = "network.proxy.type"; var map = Object.create(null); for(var key in data) map[key[0]] = [key.slice(2), data[key]]; var format = (now, to) => `Переключить на: ${map[to][0]}\nСейчас: ${map[now][0]}`; var to = val => val == config[0] ? config[1] : config[0]; var getVal = () => { var val = Services.prefs.getIntPref(pref); return val in map ? val : 0; } var setState = () => { var val = getVal(); this.icon.src = map[val][1]; this.tooltipText = format(val, to(val)); } this._handleClick = () => Services.prefs.setIntPref(pref, to(getVal())); setState(); Services.prefs.addObserver(pref, setState); addDestructor(() => Services.prefs.removeObserver(pref, setState)); })({ "0_direct": "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==", "1_manual": "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==", "2_pac": "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==", "4_autodetect": "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==", "5_system": "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==" });
нельзя как-то путь укоротить? примерно так resource://proxy.pac?
Можно, если substitution будет "proxy.pac"
и в io.newFileURI() передать, собственно, сам файл, а не папку.
и еще пути которые в .css, chrome:// не подойдут?
Не понял.
Еще вопрос -_- обертку типа этого (()=>{ })(); можно убрать? так то я держу с другими кодами там их много.
Но мне показалось лишним так как он итак вроде завернут, или оставить?
Правильно показалось, можешь убрать.
И prefs (вместе с запятой перед ним) можешь удалить,
нигде в коде не используется.
Отсутствует
Dumby
Заделал и это радует. прокси паки разные и их много. Папка в профиле , но не chrome , а просто папка Proxy///
Плюс используется network.proxy.type -1 , ну , тут сложнее , только один прокси Socks / Хотя, тоже можно кнопу сделать на разные , как с network.proxy.type -2
Да, но в 71 надо рихтануть в модулях ProxyScriptContext.jsm !
Отсутствует
kokoss
Вот тебе новое CB для 71 и не парься)
Сегодня обновился с 70 до 71 и CВ упал.
Скачал по ссылке из цитируемого поста, установил. СВ в дополнениях есть, но не работает.
Полистал форум по 71, СВ 0.0.7.0.0.8 вроде должен работать в этой 71 версии, но у меня не пашет.
Как оживить СВ?
Отредактировано leex (09-12-2019 01:14:40)
Отсутствует
leex
У меня в 71 работает эта версия CB
Win7
Отсутствует
У меня не работает ни та, ни эта.
Но в дополнениях СВ есть
Может быть в конфиге что-то поменять?
На этом конфиге все прекрасно работало вплоть до 70 версии
Отредактировано leex (09-12-2019 03:20:58)
Отсутствует
У меня не работает ни та, ни эта.
Но в дополнениях СВ есть
Может быть в конфиге что-то поменять?
На этом конфиге все прекрасно работало вплоть до 70 версии
Тогда эту версию:
Win7
Отсутствует
установил. СВ в дополнениях есть, но не работает
А, при закрытом Firefox, папку startupCache
из Локального каталога профиля удалил?
в 71 mozapps влепил от 70 , так ударило по СВ - не показывает настройки , может рихтануть что в Js или CSS самой СВ ?
Да уж, на такие эскапады, определённо, не рассчитано.
первая строка — путь до файла относительно CB,
вторая строка — то, что нужно найти,
третья строка — то, чем нужно заменить найденное.
Если получится, этот пересобранный CB
в цепи версий, разумеется, не участвует.
\bootstrap.js (this["about:addons"] = appVersion > 70 (this["about:addons"] = appVersion > 71 \chrome\custombuttons\content\addons\addons-prefs.js var features = "chrome,titlebar,toolbar,centerscreen"; var features = "chrome,titlebar,toolbar,centerscreen,noopener"; \components\CustomButtonsService.js openEditor: function (opener, uri, param) { openEditor: function (opener, uri, param) { opener = opener && opener.windowRoot.ownerGlobal;
Отсутствует
Тогда эту версию:
И она не работает
и для установки использую этот способ.
Ну да, так и есть, в конфмгах дописаны данные из этих постов еще с 69 версии
А, при закрытом Firefox, папку startupCache
из Локального каталога профиля удалил?
А у меня вообще нет такой папки в профиле
Отредактировано leex (09-12-2019 15:38:00)
Отсутствует
solombala
Вот парочка вариантов, которые работают.
Может ещё как-нибудь можно. А вот как лучше — без понятия.
addon-card[addon-id^="custombutton://buttons/"] .addon-icon { width: 16px !important; height: 16px !important; /* padding-top: 3px !important; */ }
addon-list[type=custombuttons] .addon-icon { width: 16px !important; height: 16px !important; /* padding-top: 3px !important; */ }
Отсутствует
Отсутствует
как тут выровнять? Значок могу шевелить , а текст то не опустится...
Попробуй так:
Отредактировано unter_officer (12-12-2019 14:02:02)
«The Truth Is Out There»
Отсутствует
Жаль размер текста никак...
addon-list[type=custombuttons] .addon-name {
font-size: 22px !important;
}
«The Truth Is Out There»
Отсутствует
И самих аддонов тоже не могу сделать.
В этом коде font-size не для всех аддонов, а только для СВ.
Не срабатывает.
Не срабатывает возможно из-за версии , я на 68 ESR проверял, там срабатывает. А 71+ я пока не устанавливал, поэтому проверить не могу.
«The Truth Is Out There»
Отсутствует
Dumby
В 71 отрихтованая Вами Flip-Close_Tab ....ПКМ - на prev Tab - не пашет ( это я па правый переделал , но сам код не трогал) В 70 - океу...
var {interfaces: Ci, utils: Cu} = Components; Cu.import("resource://gre/modules/Services.jsm"); var flipclosetabStatic = { customjsm: false, initialized: false, get styleURI() { delete this.styleURI; return this.styleURI = Services.io.newURI("chrome://flip_close_tab/content/button.css", null, null); }, get buttonStrings() { delete this.buttonStrings; return this.buttonStrings = Services.strings.createBundle("chrome://flip_close_tab/locale/button.properties"); }, get CustomizableUI() { delete this.CustomizableUI; var _CustomizableUI = null; try { _CustomizableUI = Cu.import("resource:///modules/CustomizableUI.jsm", {}).CustomizableUI; } catch(e) { try { _CustomizableUI = Cu.import("chrome://flip_close_tab/content/customizable.jsm", {}).CustomizableUI; this.customjsm = true; } catch(e) {} } return this.CustomizableUI = _CustomizableUI; }, start: function(win) { var onLoad = () => { win.removeEventListener("load", onLoad); this.loadIntoWindow(win); }; win.addEventListener("load", onLoad); }, get loadIntoWindow() { delete this.loadIntoWindow; this.init(); return this.loadIntoWindow = function(win) { var obj = new FlipCloseTab(); obj.load(win); Object.defineProperty(win, "_Flip_Close_Tab_Prototype", { value: obj, writable: false, configurable: true, enumerable: false }); }; }, init: function() { if (this.initialized || !this.CustomizableUI) return; this.initialized = true; var cWidget = { id: "f-flip-tabs", type: "custom", label: flipclosetabStatic.buttonStrings.GetStringFromName("f-flip-tabs.label"), tooltiptext: flipclosetabStatic.buttonStrings.GetStringFromName("f-flip-tabs.tooltip"), defaultArea: this.CustomizableUI.AREA_NAVBAR, onBuild: function(document) { var window = document.defaultView; flipclosetabStatic.stylifyButton(window, true); var toolbarbutton_0 = (document.createXULElement || document.createElement).call(document, "toolbarbutton"); toolbarbutton_0.id = "f-flip-tabs"; toolbarbutton_0.setAttribute("label", flipclosetabStatic.buttonStrings.GetStringFromName("f-flip-tabs.label")); toolbarbutton_0.setAttribute("tooltiptext", flipclosetabStatic.buttonStrings.GetStringFromName("f-flip-tabs.tooltip")); toolbarbutton_0.setAttribute("context", false); toolbarbutton_0.classList.add("toolbarbutton-1"); toolbarbutton_0.classList.add("chromeclass-toolbar-additional"); toolbarbutton_0.addEventListener("click", function(event) { var gtBrowser = window.gBrowser; if (event.button == 2) { var old = gtBrowser.selectedTab; var tabs = Array.filter(old.parentNode.getElementsByAttribute("flipselectedID", "*"), tab => !tab.hidden && !tab.closing); var last = 2; var prevTab = null; tabs.forEach((tab)=> { let s = +tab.getAttribute("flipselectedID"); if (s && s > last && old != tab) { prevTab = tab; last = s; } }); if (prevTab !== null) gtBrowser.selectedTab = prevTab; } else if (event.button == 1) { gtBrowser.removeAllTabsBut(gtBrowser.selectedTab); } else if (event.button == 0) { event.preventDefault(); event.stopPropagation(); gtBrowser.removeTab(gtBrowser.selectedTab); } }, false); return toolbarbutton_0; } }; if (this.customjsm) { this.CustomizableUI.addListener(); cWidget.onloadStylePalette = function(window) { flipclosetabStatic.stylifyButton(window, true); }; } try { this.CustomizableUI.createWidget(cWidget); } catch(e) {} }, getWindowUtils: function(window) { var has = "windowUtils" in window && window.windowUtils instanceof Ci.nsIDOMWindowUtils; return (this.getWindowUtils = has ? window => window.windowUtils : window => window.QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIDOMWindowUtils) )(window); }, stylifyButton: function(window, stylify) { var method = stylify ? "loadSheet" : "removeSheet"; try { this.getWindowUtils(window)[method]( this.styleURI, Ci.nsIDOMWindowUtils.USER_SHEET ); } catch(ex) { Cu.reportError(ex); } }, uninit: function() { if (!this.initialized) return; try { this.CustomizableUI.destroyWidget("f-flip-tabs"); } catch(e) {} if (this.customjsm) { this.CustomizableUI.removeListener(); Cu.unload("chrome://flip_close_tab/content/customizable.jsm"); } var windows = Services.wm.getEnumerator("navigator:browser"); while (windows.hasMoreElements()) { var win = windows.getNext(); if (win.QueryInterface) win = win.QueryInterface(Ci.nsIDOMWindow); try { if ("_Flip_Close_Tab_Prototype" in win) { win._Flip_Close_Tab_Prototype.unload(true); delete win._Flip_Close_Tab_Prototype; } this.stylifyButton(win); } catch(e) {} } } }; var filterTabs = node => { var func = tab => !tab.hidden && !tab.closing; return (filterTabs = "from" in Array ? node => Array.from(node.getElementsByAttribute("flipselectedID", "*")).filter(func) : node => Array.filter(node.getElementsByAttribute("flipselectedID", "*"), func) )(node); } function FlipCloseTab() { this.gtBrowser = null; this.removeListeners = null; this.blurTab = null; this.eventTabClose = false; } FlipCloseTab.prototype = { load: function(win) { var gtBrowser = this.gtBrowser = win.gBrowser || win.getBrowser(); var tabid = 1; var TabSelect = (event) => { var tab = event.target; tab.setAttribute("flipselectedID", tabid++); }; var TabClose = (event) => { var old = event.target; if (!old.selected) return; var tabs = filterTabs(old.parentNode); var last = 0; var prevTab = null; tabs.forEach((tab) => { var s = +tab.getAttribute("flipselectedID"); if (s && s > last && old != tab) { prevTab = tab; last = s; } }); if (prevTab !== null && !prevTab.closing) gtBrowser.selectedTab = prevTab; }; gtBrowser.tabContainer.addEventListener("TabSelect", TabSelect, false); if ("_blurTab" in gtBrowser) { var blurTab = this.blurTab = gtBrowser._blurTab; gtBrowser._blurTab = function _blurTab() { var old = arguments[0]; if (!old.selected) return; var tabs = filterTabs(old.parentNode); var last = 0; var prevTab = null; tabs.forEach((tab) => { var s = +tab.getAttribute("flipselectedID"); if (s && s > last && old != tab) { prevTab = tab; last = s; } }); if (prevTab !== null && !prevTab.closing) { this.selectedTab = prevTab; return; } return blurTab.apply(this, arguments); }; } else { gtBrowser.tabContainer.addEventListener("TabClose", TabClose, true); this.eventTabClose = true; } this.removeListeners = function() { gtBrowser.tabContainer.removeEventListener("TabSelect", TabSelect, false); if (this.eventTabClose) gtBrowser.tabContainer.removeEventListener("TabClose", TabClose, true); }; var sel = gtBrowser.selectedTab; if (sel && !sel.hidden) sel.setAttribute("flipselectedID", tabid++); }, unload: function(shutdown = false) { this.removeListeners(); if (shutdown) { if (this.blurTab !== null) this.gtBrowser._blurTab = this.blurTab; var tabs = filterTabs(this.gtBrowser.tabContainer); tabs.forEach((tab) => { tab.removeAttribute("flipselectedID"); }); } } }; var WindowListener = { onOpenWindow: function(aWindow) { var win = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow); function onWindowLoad() { win.removeEventListener("load", onWindowLoad); if (win.document.documentElement.getAttribute("windowtype") == "navigator:browser") flipclosetabStatic.loadIntoWindow(win); } win.addEventListener("load", onWindowLoad); }, onCloseWindow: function(aWindow) { var win = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow); if (win.document.documentElement.getAttribute("windowtype") == "navigator:browser" && "_Flip_Close_Tab_Prototype" in win) win._Flip_Close_Tab_Prototype.unload(); }, onWindowTitleChange: function(aWindow, newTitle) { } }; function startup(data, reason) { var wm = Services.wm; var windows = wm.getEnumerator(null); while (windows.hasMoreElements()) { var win = windows.getNext(); if (win.QueryInterface) win = win.QueryInterface(Ci.nsIDOMWindow); try { var type = win.document.documentElement.getAttribute("windowtype"); if (type == "navigator:browser") flipclosetabStatic.loadIntoWindow(win); else if (type == "navigator:blank") flipclosetabStatic.start(win); } catch(e) {} } wm.addListener(WindowListener); } function shutdown(data, reason) { if (reason == APP_SHUTDOWN) return; flipclosetabStatic.uninit(); Services.wm.removeListener(WindowListener); } function install(data, reason) { } function uninstall(data, reason) { }
Отсутствует