Для Firefox 26
var e = mgr.enumerateReporters(); var gMemReporters = {}; while (e.hasMoreElements()) { var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); gMemReporters[mr.path] = mr; } var workingSet = gMemReporters["resident"].amount;
заменить на:
var ucjs_MemoryMonitor = { _interval: 2000, //ms _maxMemory: 700, // если больше, то текст индикатора станет жирным _prefix: "MiB", //B, KB, KiB, MB, MiB, GB, GiB _dPrefix: true, _inURLbar: true, // true - в адресной строке, false в статусбаре(панель дополнений) interval: null, init: function () { if (!document.getElementById("ucjs_MemoryMonitor")) { var memoryPanel = document.createElement("statusbarpanel"); memoryPanel.id = "ucjs_MemoryMonitor"; memoryPanel.setAttribute("label", this.setPrefix(this._dPrefix)); if (this._inURLbar) { document.getElementById("urlbar-icons").appendChild(memoryPanel); } else { try { document.getElementById("status-bar").appendChild(memoryPanel); } catch (e) { document.getElementById("addon-bar").appendChild(memoryPanel); } } } this.start(); this.interval = setInterval(this.start, this._interval); }, uninit: function () { clearInterval(ucjs_MemoryMonitor.interval); }, destroy: function () { this.uninit(); var m = document.getElementById("ucjs_MemoryMonitor"); if (m) m.parentNode.removeChild(m); ucjs_MemoryMonitor = null; }, addFigure: function (str) { var num = new String(str).replace(/,/g, ""); while (num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2"))); return num; }, getSize: function (mem, flag) { var pre = 1; switch (this._prefix) { case 'KB': pre = 1000; break; case 'KiB': pre = 1024; break; case 'MB': pre = 1000 * 1000; break; case 'MiB': pre = 1024 * 1024; break; case 'GB': pre = 1000 * 1000 * 1000; break; case 'GiB': pre = 1024 * 1024 * 1024; break; }; if (flag) return mem * pre; else return ucjs_MemoryMonitor.addFigure(Math.round(mem / pre)); }, setPrefix: function (flag) { return (flag) ? " " + this._prefix : ""; }, start: function () { try { const Cc = Components.classes; const Ci = Components.interfaces; var mgr = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager); /* var e = mgr.enumerateReporters(); var gMemReporters = {}; while (e.hasMoreElements()) { var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); gMemReporters[mr.path] = mr; }; var workingSet = gMemReporters["resident"].amount; */ var workingSet = mgr.resident; var restartMemory = ucjs_MemoryMonitor.getSize(ucjs_MemoryMonitor._maxMemory, true); var memoryPanel = document.getElementById("ucjs_MemoryMonitor"); memoryPanel.setAttribute("label", ucjs_MemoryMonitor.getSize(workingSet) + ucjs_MemoryMonitor.setPrefix(ucjs_MemoryMonitor._dPrefix)); //memoryPanel.setAttribute("memload", "norm"); if (workingSet > restartMemory) { memoryPanel.setAttribute("memload", "high"); } else { memoryPanel.setAttribute("memload", "norm"); } } catch (e) { clearInterval(ucjs_MemoryMonitor.interval); } } }; var cssStr = ('\ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");\n\ @-moz-document url("' + window.location.href + '") {\n\ #ucjs_MemoryMonitor {\n\ /*font-size: -moz-use-system-font !important;*/\n\ -moz-appearance: none !important;\n\ padding: 0 !important;\n\ margin: 0 !important;\n\ background: transparent !important;\n\ border: 0 !important;\n\ }\n\ #ucjs_MemoryMonitor > .statusbarpanel-text {\n\ font-size: 1em !important;\n\ margin-top: 0 !important;\n\ margin-bottom: 0 !important;\n\ -moz-margin-start: 3px !important;\n\ -moz-margin-end: 3px !important;\n\ }\n\ #ucjs_MemoryMonitor[memload="high"] .statusbarpanel-text {\n\ font-weight: bold !important;\n\ }\n\ }\n\ '); var cssURI = this.cssURI = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService) .newURI("data:text/css," + encodeURIComponent(cssStr), null, null); var sss = this.sss = Components.classes["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService); if (!sss.sheetRegistered(cssURI, sss.USER_SHEET)) sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET); if (typeof addDestructor == "function" && // userChromeJS/uc addDestructor != ("addDestructor" in window && window.addDestructor)) { addDestructor(function (reason) { if (reason != "destructor") { let sss = this.sss; let cssURI = this.cssURI; if (sss.sheetRegistered(cssURI, sss.USER_SHEET)) sss.unregisterSheet(cssURI, sss.USER_SHEET); } if (ucjs_MemoryMonitor) { ucjs_MemoryMonitor.destroy(); } }, this); } ucjs_MemoryMonitor.init();
Отредактировано 2k1dmg (17-09-2013 15:54:56)
Отсутствует
Насчет рестарта посмотрите, как справились здесь:https://github.com/ardiman/userChrome.j … rMod.uc.js
Отсутствует
Для Firefox 26
спасиб
Добро пожаловать на форум mozilla-russia.org. Здесь вы можете посоветоваться или обратиться за помощью к фанатам и пользователям продуктов Мозиллы. Если не знаете как правильно оформить пост специально для вас расписан пункт 2.2 правил форума
Сброс на примере Firefox – лёгкое решение большинства проблем
Починка браузера. Перенос своих настроек на новый профиль.
Отсутствует
Решил создать почти новый профиль, перенес папку с кнопками CB, все отвалились, костыль с предыдущей страницы не работает что можно сделать?
Что за костыль?
Отсутствует
sthprog пишет: Решил создать почти новый профиль, перенес папку с кнопками CB, все отвалились, костыль с предыдущей страницы не работает что можно сделать?Что за костыль?
этот, в прошлый раз советовали
Отсутствует
Отсутствует
Мне кажется, что для экономии места можно не показывать "МВ", а только само число мегабайт.
Кроме того можно показывать только 3 младшие цифры, а 1200МБ от 200МБ можно различить цветом фона
Индикатор можно ещё в аддон баре показывать - "addon-bar". Это почти там же где и "status-bar", чуть левее в панели закладок.
Интересно - можно ли его помещать ещё в каком-то месте - панели закладок, таб-баре и т.д.?
Отредактировано difabor (12-11-2013 16:09:53)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Мне кажется, что для экономии места можно не показывать "МВ", а только само число мегабайт.
Дело вкуса или переделать просишь?
Кроме того можно показывать только 3 младшие цифры, а 1200МБ от 200МБ можно различить цветом фона
Ну можно конечно, но почему именно эти значения?
Интересно - можно ли его помещать ещё в каком-то месте - панели закладок, таб-баре и т.д.?
Легко.
2. Если текст состоит из нескольких символов, можно ли устанавливать цвета отдельно для каждого символа?
Можно но сложно, я не сделаю.
Отсутствует
difabor пишетМне кажется, что для экономии места можно не показывать "МВ", а только само число мегабайт.
Дело вкуса или переделать просишь?
difabor пишетКроме того можно показывать только 3 младшие цифры, а 1200МБ от 200МБ можно различить цветом фона
Ну можно конечно, но почему именно эти значения?
difabor пишетИнтересно - можно ли его помещать ещё в каком-то месте - панели закладок, таб-баре и т.д.?
Легко.
difabor пишет2. Если текст состоит из нескольких символов, можно ли устанавливать цвета отдельно для каждого символа?
Можно но сложно, я не сделаю.
Спасибо!
Нет, нет, я не прошу Вас переделывать, я хочу сам научиться переделывать! (МВ я сам смогу убрать).
То же касается 3 младших цифр - это я сам постараюсь - всё-таки надо же мне учиться
А вот как указать другую панель - я не знаю и если бы Вы мне просто показали как это делается - был бы Вам очень благодарен.
Кроме того, если бы Вы мне просто показали как менять цвет всего текста - я бы Вам был очень признателен.
Что же касается установки цветов отдельных цифр, то очевидно, что для Memory Monitor это не нужно, но знать, как это делается я бы хотел...
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Ох тяжко, мне не русскому человеку трудно объяснять
Цвета отдельных цифр - наверно нужно создать и объединить в адресной строке несколько маленьких разноцветных панелей которые должены отображать только одну цифру расхода памяти..
Как указать другую панель здесь почитай Метод appendChild() – добавление дочернего узла к XML элементу | okITgo.ru и Метод insertBefore() XML Элемента | okITgo.ru
Для примера ниже в коде который я переписал для наглядности замени:
var urlbarIcons = document.getElementById("urlbar-icons");
на:
var urlbarIcons = document.getElementById("PersonalToolbar"); //это панель закладок
// Показывать потребление памяти в адресной строке, от 12.11.2013. ................................ (function func() { // Создать в адресной строке счётчик памяти .... var memoryDisplay = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки addDestructor(function() { urlbarIcons.removeChild( memoryDisplay ) }); memoryDisplay.id = "memoryDisplay"; memoryDisplay.label = getMemory(); setInterval(function() { memoryDisplay.label = getMemory() }, 2000 ); // таймер обновляет счётчик, по умолчанию в 2000мс( 2 сек ) // Получить потребление памяти в MB .... function getMemory() { var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager); var e = reporterManager.enumerateReporters(); while ( e.hasMoreElements() ) { var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); func[mr.path] = mr; } var memory = func["resident"].amount; return ( Math.round( memory/1048576 )+10 ); }; // Css стиль для счётчика .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #memoryDisplay { -moz-appearance: none !important; border: 0 !important; min-width: 5.5em; text-align: right; }\ #memoryDisplay{ color: #FF1493 !important; }\ ')); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); addDestructor(function() { sss.unregisterSheet(uri, sss.AGENT_SHEET) }); })();
Цвет всего текста - #memoryDisplay{ color: #FF1493 !important; }
Отредактировано bunda1 (13-11-2013 00:03:21)
Отсутствует
bunda1 можно подставить в подсказку различные показатели типа памяти из about:memory:
например:
var commitmentSize=(typeof(gMemReporters["private"])!="undefined" ? gMemReporters["private"].amount : 0);
var gfxImage=(typeof(gMemReporters["vsize"])!="undefined" ? gMemReporters["vsize"].amount : 0);
memoryPanel.setAttribute("tooltiptext",
((workingSet) ? "resident: " + ucjs_MemoryMonitor.getSize(workingSet) + " " + ucjs_MemoryMonitor._prefix + "\n" : "") +
((commitmentSize) ? "private: " + ucjs_MemoryMonitor.getSize(commitmentSize) + " " + ucjs_MemoryMonitor._prefix + "\n" : "") +
((gfxImage) ? "vsize: " + ucjs_MemoryMonitor.getSize(gfxImage) + " " + ucjs_MemoryMonitor._prefix + "\n" : "")
);
Из того что показывает кнопка - соответствует: значению resident.
В диспетчере задач - другое значение.
Можете объяснить (может быть и ни к вам вопрос, а ко всем) - что мы наблюдаем на этой кнопке.? Чисто спортивный интерес.
Отсутствует
Из того что показывает кнопка - соответствует: значению resident.
В диспетчере задач - другое значение.
У меня соответствует тому что показывает диспетчер задач, разница около 5-10MB
Добавлено 13-11-2013 00:31:08
Я так понимаю resident и enumerateReporters() отдаёт всю занимаемую оперативную память.
Отредактировано bunda1 (13-11-2013 00:31:08)
Отсутствует
Ох тяжко, мне не русскому человеку трудно объяснять
...Как указать другую панель здесь почитай Метод appendChild() – добавление дочернего узла к XML элементу | okITgo.ru и Метод insertBefore() XML Элемента | okITgo.ru
Для примера ниже в коде который я переписал для наглядности замени:
var urlbarIcons = document.getElementById("urlbar-icons");
на:
var urlbarIcons = document.getElementById("PersonalToolbar"); //это панель закладок
Огромнейшее спасибо!
А как называется таб бар (бар вкладок) и может есть место, где перечислены названия всех тулбаров?
Отредактировано difabor (13-11-2013 02:18:19)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor пишетА как называется таб бар (бар вкладок) и может есть место, где перечислены названия всех тулбаров?
TabsToolbar
Спасибо большое!
Подстраиваю под свои нужды Ваш монитор - скорее, с целью научиться чему либо.
Заодно обнаружил, что personal-bookmarks это не PersonalToolbar и можно добавить и к personal-bookmarks - тогда монитор можно перетаскивать вместе с закладками куда угодно
Для Вас, конечно, это не новость, а вот я открываю для себя Америки
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
Также можно выводить расход памяти или другие данные прямо на Сustom Buttons кнопку:
// Показывать потребление памяти на текущей кнопке, от 12.11.2013. ................................ (function () { self.label = getMemory(); self.timer = setInterval(function() { self.label = getMemory() }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек ) // Получить потребление памяти в MB .... function getMemory() { var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager); var e = reporterManager.enumerateReporters(); while ( e.hasMoreElements() ) { var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); self[mr.path] = mr; } var memory = self["resident"].amount; return ( Math.round( memory/1048576 ) ); }; // Стиль добавляет текст на кнопку .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ %button% .toolbarbutton-icon {\ display: none !important;\ }\ %button% .toolbarbutton-text {\ display: -moz-box !important;\ }\ %button% {\ -moz-box-orient: horizontal !important;\ }\ '.replace(/%button%/g, "#" + _id) )); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); // Удалять изменения .... addDestructor(function() { sss.unregisterSheet(uri, sss.AGENT_SHEET); try { window.clearTimeout( self.timer ) } catch(e) {}; }); })();
Отсутствует
Добавлены новые возможности:
Теперь Левый клик в адресной строке на расходе оперативной памяти открывает в новой вкладке потребление памяти(about:memory) подробно по элементам.
В открывает пустую страницу, с названием вкладки about:memory
Отсутствует
voqabuhe
Не понятная проблема, может в коде замени:
var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице memoryTab.addEventListener("pageshow", function c(e) { this.removeEventListener( e.type, c ); setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);
на:
Отсутствует
Упс, пропустил }); за setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);
Отредактировано bunda1 (15-11-2013 23:48:33)
Отсутствует