Да, походу , этот хак предложенный Infocatcher работает в 57-й норм. но плюсом так же убирает разделение на процессы в одном всё начинает работать. И по объему становится ~ равным PM
Брагодарю, ребятки, за распорку! Работаить!
ЕЯПП праит она нечто из omni.ja ? так может можно его прям там захачить один раз, сохранить образец и дальше при обнове править
ps. вообще, надо побольше поюзать эту 57 вроде ничче так получается замена хромам. может и ошибочное первое впечатление было, может можно будет его..того.. напильнеком закруглить в нужную форму и поведение. Поглядим.
...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation
Отсутствует
Infocatcher
загружаются ли в отдельные окна адреса вида
data:application/vnd.mozilla.xul+xml,…
Нашёл! У меня вот так работает.
Как думаешь, это безопасно?
var xul = ` <?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="document.querySelector('label').value += window.arguments[0];"> <label value="Test: "></label> </dialog> `; var url = "data:application/vnd.mozilla.xul+xml," + encodeURIComponent(xul.trim()); var features = "chrome,all,resizable,dependent,left=400,top=240,width=300,height=140"; var pref = "security.data_uri.unique_opaque_origin"; var val = Services.prefs.getBoolPref(pref); if (val) Services.prefs.setBoolPref(pref, false); window.openDialog(url, "_blank", features, "OK"); if (val) Services.prefs.setBoolPref(pref, true);
Отсутствует
Как думаешь, это безопасно?
А вот интересно, возможно ли сформировать выпадающий с ошибкой window.openDialog()?
Обгуглил: 1, 2. Вот с точки зрения безопасности – вообще не вижу проблем («мы сделаем как в других браузерах», а не мы закроем такую-то уязвимость).
Для старых версий есть смысл добавить
var val = Services.prefs.getPrefType(pref) == Services.prefs.PREF_BOOL && Services.prefs.getBoolPref(pref);
А дальше, для успокоения, то ли try/finally, то ли
if (val) { Services.prefs.setBoolPref(pref, false); setTimeout(function() { Services.prefs.setBoolPref(pref, true); }, 0); }
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Есть два окна, каким кодом перенести вкладку из одного в другое, как это делает drag&drop, т.е., без перезагрузки содержимого?
Отсутствует
Если я напишу #urlbar:hover {min-width: 600px !important;}, то минимальная ширина urlbarа станет 600рх если курсор на urlbarе.
Но на urlbarе имеются ещё и иконки - они тоже сдвинутся, что не желательно.
Как мне написать подобную команду, но чтобы минимальная ширина устанавливалась только если курсор на текстовой части urlbarа?
Есть такая возможность сделать это стилем?
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
#urlbar:hover
может так
а сложно или может уже есть , но я не нашел ... сделать кнопку для : "добавить к tooltip-у вкладки её урл. адресс" ?
...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation
Отсутствует
Какая прелесть! Большое спасибо, mokujin, работает по клику! А клики на иконки не изменяют ширины, то есть так как надо!
Ещё раз большое спасибо!
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Есть два окна, каким кодом перенести вкладку из одного в другое, как это делает drag&drop, т.е., без перезагрузки содержимого?
Для лисиц помоложе есть метод gBrowser.adoptTab
А для 45-й открываешь страницу с адресом
view-source:chrome://browser/content/tabbrowser.xml
находишь хэндлер "drop" и копируешь из него нужный код.
Ну, приблизительно, как-то так
for(var win of CustomizableUI.windows) { if (win == window) win = null; else break; } if (win) { var tab = gBrowser.selectedTab, gb = win.gBrowser; var url = tab.linkedBrowser.currentURI.spec; var newTab = gb.addTab("about:blank"); var newBrowser = gb.getBrowserForTab(newTab); gb.updateBrowserRemotenessByURL(newBrowser, url); newBrowser.stop(); newBrowser.docShell; gb.selectedTab = newTab; gb.swapBrowsersAndCloseOther(newTab, tab); gb.updateCurrentBrowser(true); }
сделать кнопку для : "добавить к tooltip-у вкладки её урл. адресс"
Что-нибудь незамысловатое подойдёт?
((tooltip, tab) => tooltip && addEventListener("popupshowing", e => !e.defaultPrevented && (tab = document.tooltipNode) && tab.localName == "tab" && !tab.mOverCloseButton && !tab._overPlayingIcon && (tooltip.boxObject.firstChild.firstChild.data = tooltip.getAttribute("label") + "\n" + tab.linkedBrowser.currentURI.spec) , false, tooltip))(document.getElementById("tabbrowser-tab-tooltip"));
Отсутствует
mokujin,
Насчёт 'сделать кнопку для : "добавить к tooltip-у вкладки её урл. адрес' - у Infocatcherа есть такой аддон: Tab Scope Tweaker
и там есть ссылка на код: Infocatcher/Tab_Scope_Tweaker на гитхабе
Этот аддон добавляет урл адрес вкладки к превью вкладки, которое делает другой аддон - Tab Scope.
Может быть из того кода Infocatcherа можно понять как этот урл получить, по mouseover запомнить исходный title и затем добавить этот урл к title таба, а по mouseleave - восстановить исходный title.
Мне во всём этом трудно разобраться, но может Вы сможете?
P.S. Раз Dumby уже предложил решение, мои сентенции можно вообще опустить
Отредактировано difabor (29-10-2017 23:10:22)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
благодарю, парни.
Dumby - дал готовое, difabor - подкинул инфу.
Шшикарненько, пойду ковырять\пробовать
Добавлено 30-10-2017 01:29:33
добавил decodeURIComponent(); шобы ссылки с кириллицей норм. показывало.
ТакЪ:
// К тултипу вкладки добавить её Url ©Dumby ((tooltip, tab) => tooltip && addEventListener("popupshowing", e => !e.defaultPrevented && (tab = document.tooltipNode) && tab.localName == "tab" && !tab.mOverCloseButton && !tab._overPlayingIcon && (tooltip.boxObject.firstChild.firstChild.data = tooltip.getAttribute("label") + "\n" + decodeURIComponent(tab.linkedBrowser.currentURI.spec)) , false, tooltip))(document.getElementById("tabbrowser-tab-tooltip"));
Отредактировано mokujin (30-10-2017 01:30:21)
...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation
Отсутствует
bugmenot пишетЕсть два окна, каким кодом перенести вкладку из одного в другое, как это делает drag&drop, т.е., без перезагрузки содержимого?
Ну, приблизительно, как-то так
О, спасибо!)
Отсутствует
Я так понимаю, в Firefox 58.0a1 (2017-11-05) или где-то рядом с гиканьем и улюлюканием открутили загрузку настроек по умолчанию из defaults/preferences/*.js legacy-расширений. Как следствие, снова сломало Custom Buttons (и если бы только его...).
Добавлено 06-11-2017 00:18:17
Неподписанная версия с новыми распорками: custom_buttons-0.0.5.8.9-fixed7pre.xpi
Отредактировано Infocatcher (06-11-2017 00:18:17)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Нужно больше костылей!
БОЛЬШЕ!!!
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Infocatcher
Наблюдаю за вашей героической борьбой с разработчиками Мозилы. А что дальше? Ведь рано или поздно Custom Button канет в лету или как? Уже подумываю, а может лучше сразу на оригинал (Хром) переходить, чем пользоваться клоном (Firefox)? Ведь всё к тому идёт.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7
можно и на хром, только это все переносить надо, то что сейчас есть в профиле фаерфокса. а там не мало, и не только у меня такая ситуация наверн
Отсутствует
Уже подумываю, а может лучше сразу на оригинал (Хром) переходить, чем пользоваться клоном (Firefox)? Ведь всё к тому идёт.
А я поглядываю в сторону Pale Moon.
Те немногие дополнения, которыми я пользуюсь в FF, есть и для Pale Moon. Тот небольшой набор кнопок, которым я пользуюсь в FF, работает и в Pale Moon.
Отредактировано unter_officer (06-11-2017 18:12:54)
«The Truth Is Out There»
Отсутствует
а может лучше сразу на оригинал (Хром) переходить, чем пользоваться клоном (Firefox)?
А под Хром ничего интересного не написать. Хоть какой-то интерес представляют форки Firefox, которые, впрочем, не факт что потянут обновления под новые стандарты (та же старая Opera не потянула).
И пока что все говорит в пользу некомпетентности руководства Mozilla: хоть сколько-то доработанные, но не обкатанные на реальной пользовательской базе WebExtensions внедряются одновременно с выпиливанием старых расширений. Тогда как логичнее было бы сначала выкатить в релиз, собрать статистику, отзывы – чтобы кому не понравилось, включили бы поддержку старых расширений. И чтобы было видно, что востребовано, ради каких расширений пользователи отказываются от потенциального преимущества в быстродействии.
Или вот грядущая (как я понимаю) зачистка AMO от устаревших расширений – сразу видно, что пользователи Thunderbird и SeaMonkey никого не волнуют. Правда, это, увы, ожидаемо.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
… чинил DOM Inspector
О! А, оказывается, его все-таки не полностью забросили:
/seamonkey/releases/2.49.1/distributed/inspector@mozilla.org.xpi
По ссылке некий DOM Inspector 2.0.17.1, хотя и без исправлений под Nightly, но зато с некими правками про перетаскивание.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
такой вопрос - есть расширение Tab Scope http://www.xuldev.org/tabscope/ или https://addons.mozilla.org/ru/firefox/a … serprofile- всплывающее мини-окно на вкладке
но кнопка для вкл/откл превью вкладок не предусмотрена
возможно ли на это расширение сделать кнопку Вкл минипросмотр вкладок/выключить минипросмотр вкладок ?
по about:config команды не наблюдаю ..
Отредактировано svin88 (09-11-2017 22:55:59)
Отсутствует
День добрый!
Попробовал перенести кнопку Memory Monitor на 57, ожидаемо не заработала.
Попробовал обкорнать до минимума и выводить счётчик на label кнопки. Вышло такое:
/*Initialization Code*/ var style = custombutton.buttonGetHelp(self).replace(/id/g, _id); var uri = makeURI('data:text/css,'+ encodeURIComponent(style)); var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, 0); (function () { self.timer = setInterval(function() { self.label = getMemory() + ' MB'}, 2000 ); function getMemory() { var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager); try { var e = reporterManager.enumerateReporters(); while ( e.hasMoreElements() ) { var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); self[mr.path] = mr; } var memory = self["resident"].amount; } catch(e) { var memory = reporterManager.resident; } return ( Math.round( memory/1048576 ) ); }; addDestructor(function() { try { window.clearTimeout( self.timer ) } catch(e) {}; }); })();
Отредактировано Coroner (09-11-2017 13:24:37)
Отсутствует
Помогите пожалуйста создать или подскажите если есть подобное: кнопка с выпадающим списком закладок примерно как здесь: https://forum.mozilla-russia.org/viewto … 31#p428831
ну естественно там будут наиболее часто используемые закладки и желательно чтоб в выпадающем списке были именно иконки примерно как на картинке
картинка кликабельна
Отредактировано ProfObzor (13-11-2017 19:03:25)
Отсутствует
Or should be written some custom loader to enumerate all install locations and load defaults/preferences/*.js manually.
Да-да, я сразу что-то такое в конфигурационный файл добавил.
И, вроде, даже как-то работает, на первый взгляд.
// Firefox 58+ // bug 1413413 - Remove support for extensions having their own prefs file // https://bugzilla.mozilla.org/show_bug.cgi?id=1413413 try {(({Preferences, Services}, {classes: Cc, interfaces: Ci, utils: Cu}) => { if (parseInt(Services.appinfo.version) < 58) return; var urls = new Set(), file = Services.dirsvc.get("ProfD", Ci.nsIFile); var skip = addon => addon.type != "extension" || addon.bootstrap || ("location" in addon && addon.location != "app-profile") || addon.userDisabled || addon.appDisabled || addon.softDisabled; var files = (dir, callback) => { if (!dir.exists() || !dir.isDirectory()) return; var en = dir.directoryEntries; while(en.hasMoreElements()) { var file = en.getNext().QueryInterface(Ci.nsIFile); if (file.isFile()) callback(file); } } var fromZip = file => { var zr = Cc["@mozilla.org/libjar/zip-reader;1"].createInstance(Ci.nsIZipReader); try { zr.open(file); var prfx = "jar:" + Services.io.newFileURI(file).spec + "!/"; var en = zr.findEntries("defaults/preferences/*.js$"); while(en.hasMore()) urls.add(prfx + en.getNext()); } finally {zr.close();} } var fromDir = dir => { ["defaults", "preferences"].forEach(dir.append); if (dir.exists() && dir.isDirectory()) files(dir, file => file.leafName.endsWith(".js") && urls.add(Services.io.newFileURI(file).spec) ); } var readFile = "readFile" in Cu ? "readFile" : "readUTF8File"; var staged = file.clone(), stagedIds = new Set(); ["extensions", "staged"].forEach(staged.append); if (staged.exists() && staged.isDirectory()) files(staged, file => { if (!file.leafName.endsWith(".json")) return; var addon = JSON.parse(Cu[readFile](file)); if (skip(addon)) return; stagedIds.add(addon.id); file.initWithPath(file.path.replace(/\.json$/, ".xpi")); if (file.exists() && file.isFile()) fromZip(file); else { file.initWithPath(file.path.slice(0, -4)); if (file.exists() && file.isDirectory()) fromDir(file); } }); file.append("extensions.json"); if (file.exists() && file.isFile()) { var {addons} = JSON.parse(Cu[readFile](file)); addons.forEach(addon => { if (skip(addon) || stagedIds.has(addon.id)) return; file.initWithPath(addon.path); if (!file.exists()) return; if (file.isFile()) fromZip(file); else if (file.isDirectory()) fromDir(file); }); } if (!urls.size) return; var prefs = new Preferences({defaultBranch: true}); var obj = { pref: function(key, val) { if (!/^chrome:\/\/.+\.properties$/.test(val)) return prefs.set(key, val); var pls = Cc["@mozilla.org/pref-localizedstring;1"] .createInstance(Ci.nsIPrefLocalizedString); pls.data = val; prefs._prefBranch.setComplexValue(key, Ci.nsIPrefLocalizedString, pls); } }; urls.forEach(url => {try { Services.scriptloader.loadSubScript(url, obj); } catch(e) {}}); })(Components.utils.import("resource://gre/modules/Preferences.jsm", {}), Components);} catch(ex) {}
Отредактировано Dumby (10-12-2017 23:43:30)
Отсутствует
А затем подкинули очередную порцию вандализма,
и часть смысла всего этого потерялась.
Удивительное сочетание разумно-запоздалого и шаловливых ручек.
А могли бы и get/setCharPref() упороть, я вот сходу не вижу, что бы сломалось, начни он вдруг работать с юникодом (кроме разве что мизерной потери производительности).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует