Memory Monitor ( Firefox 17 + )
Автор: bunda1
Версия: от 28.07.2014.
Описание: Kод показывает в адресной строке расход оперативной памяти в Firefox, по клику на котором потребление памяти будет показана в вкладке подробно по элементам. Сплывающая подсказка у счётчика памяти отображает в MB максимально возможное и текущее заполнение дискового кеша, оффлайн кеша и кеша в оперативной памяти(FF26).
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.
Memory Monitor( Firefox 17-45 )
// Показывать потребление памяти в адресной строке, от 28.07.2014. ................................ (function () { if ( document.getElementById('memoryDisplay') ) return; // Создать в адресной строке счётчик памяти .... var memoryDisplay = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки memoryDisplay.id = "memoryDisplay"; memoryDisplay.label = getMemory() + ' MB'; self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек ) // Всплывающая подсказка у счётчика отображает заполнение дискового кеша .... var k = 100, mb = 1024 * 1024, str = "", cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService), visitor = { visitDevice: addInfo }; function addInfo(device, info) { str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache: " + [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / "); }; memoryDisplay.onmouseenter = function() { str = ""; try { cs.visitEntries(visitor) } catch(e) {}; memoryDisplay.tooltipText = "Л: Подробно показать потребление памяти в вкладке" + "\n\n" + ( cbu.getPrefs("browser.cache.memory.enable") || cbu.getPrefs("browser.cache.disk.enable") ? str : "Кэш отключен" ); }; // Получить всю занимаемую оперативную память в MB .... 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 }; // для Nightly return ( Math.round( memory/1048576 ) ); }; // По клику подробно показать потребление памяти в вкладке .... memoryDisplay.onclick = function(e) { if ( e.button ) return; 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); }); }; // Css стиль для счётчика .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #memoryDisplay { -moz-appearance: none !important; margin-left: 2px !important; margin-right: -4px !important; border: 0 !important; min-width: 5.5em; text-align: right; }\ #memoryDisplay[resetMemory] { color: red !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); urlbarIcons.removeChild( memoryDisplay ) try { window.clearTimeout( self.timer ) } catch(e) {}; }); })();
Memory Monitor( Firefox 45+ )
// Показывать потребление памяти в адресной строке, от 04.03.2017. ................................ (function () { if ( document.getElementById('memoryDisplay') ) return; // Создать в адресной строке счётчик памяти .... var memoryDisplay = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки memoryDisplay.id = "memoryDisplay"; memoryDisplay.label = getMemory() + ' MB'; self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек ) // Всплывающая подсказка у счётчика отображает заполнение дискового кеша .... var data = { memory: "Memory Cache: ", disk: "Disk Cache: ", offline: "Offline Cache: " }; function getSize(size) { if (!size) return size === 0 ? "0" : "?"; for(var count = -1; size >= 1024; size /= 1024, count++); return size.toFixed(2).replace(/0+$/, "").replace(/\.$/, "") + " " + ("KMGT"[count] || "") + "B"; } function setInf(tot, max, type, i) { var inf = getSize(tot) + " / " + getSize(max); var key = "browser.cache." + type + ".enable"; if (!Services.prefs.getBoolPref(key)) inf += " (disabled)"; memoryDisplay.tooltipText = memoryDisplay.tooltipText.replace(zws(i), inf); } function zws(ind) "\u200B\u200B\u200B".slice(0, ++ind); var types = Object.keys(data); var ttt = types.map(function(key, i) data[key] + zws(i)).join("\n"); var context = Cu.import("resource://gre/modules/LoadContextInfo.jsm", {}).LoadContextInfo.default; memoryDisplay.onmouseenter = function() { memoryDisplay.tooltipText = "Л: Показать потребление памяти в вкладке\n" + ttt; try { var entries = {}; Services.cache.visitEntries({ visitDevice: function(device, info) entries[device] = info, visitEntry: function() {} }); types.forEach(function(type, i) { var info = entries[type]; setInf(info && info.totalSize, info && info.maximumSize, type, i) }); } catch(ex) { Services.cache2 && types.forEach(function(type, i) { var func = function(aEntryCount, aConsumption, aCapacity, aDiskDirectory) setInf(aConsumption, aCapacity, type, i); var storage = Services.cache2[(type == "offline" ? "app" : type) + "CacheStorage"](context, null); try { storage.asyncVisitStorage({onCacheStorageInfo: func}, false) } catch(ex) {}; }); } }; // Получить всю занимаемую оперативную память в MB .... 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 }; // для Nightly return ( Math.round( memory/1048576 ) ); }; // По клику подробно показать потребление памяти в вкладке .... memoryDisplay.onclick = function(e) { if ( e.button ) return; 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); }); }; // Css стиль для счётчика .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #memoryDisplay { -moz-appearance: none !important; margin-left: 2px !important; margin-right: -4px !important; border: 0 !important; min-width: 5.5em; text-align: right; }\ #memoryDisplay[resetMemory] { color: red !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); urlbarIcons.removeChild( memoryDisplay ) try { window.clearTimeout( self.timer ) } catch(e) {}; }); })();
Memory Monitor как кнопка с выводом расхода оперативной памяти на кнопке:
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%3E222MB%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-2%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20memoryTab%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22about%3Amemory%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%22about%3Amemory%22%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u043D%u0430%u0436%u0438%u043C%u0430%u0435%u0442%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20%20%20%20%20%20%20%20memoryTab.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%20e.type%2C%20c%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20try%20%7B%20e.originalTarget.getElementById%28%27measureButton%27%29.click%28%29%20%7D%20catch%28e%29%20%7B%7D%20%7D%2C%200%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20var%20alertService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20%20%20%20%20%20%20%20%20alertService.showAlertNotification%28%27chrome%3A//global/skin/icons/information-16.png%27%2C%20%27%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%27%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20alertService.closeAlert%28%29%20%7D%2C%202500%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u043D%u0430%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u0435%20................................%0A%28function%20%28%29%20%7B%0A%20%20%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%3B%20%20%0A%20%20%20self.timer%20%3D%20setInterval%28function%28%29%20self.label%20%3D%20getMemory%28%29%20+%20%27MB%27%2C%202000%20%29%3B%20//%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u043E%u0431%u043D%u043E%u0432%u043B%u044F%u0435%u0442%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u0440%u0430%u0437%20%u0432%202000%u043C%u0441%28%202%20%u0441%u0435%u043A%20%29%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%20%7D%3B%20//%20%u0434%u043B%u044F%20Nightly%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%0A%0A%20%20%20//%20%u0421%u0442%u0438%u043B%u044C%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%25button%25%20.toolbarbutton-icon%20%7B%5C%0A%20%20%20%20%20display%3A%20none%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20.toolbarbutton-text%20%7B%5C%0A%20%20%20%20%20display%3A%20-moz-box%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20%7B%5C%0A%20%20%20%20%20-moz-box-orient%3A%20horizontal%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%27.replace%28/%25button%25/g%2C%20%22%23%22%20+%20_id%29%20%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%20%0A%20%20%20%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20%20addDestructor%28function%28%29%20%7B%20%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0434%u0438%u0441%u043A%u043E%u0432%u043E%u0433%u043E%20%u043A%u0435%u0448%u0430%20..............%0Avar%20data%20%3D%20%7B%0A%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%7D%3B%20%20%20%0Afunction%20getSize%28size%29%20%7B%0A%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%7D%0Afunction%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%7D%0Afunction%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0Avar%20types%20%3D%20Object.keys%28data%29%3B%0Avar%20ttt%20%3D%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%0Avar%20context%20%3D%20Cu.import%28%22resource%3A//gre/modules/LoadContextInfo.jsm%22%2C%20%7B%7D%29.LoadContextInfo.default%3B%0Aself.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20self.tooltipText%20%3D%20%22%u041B%3A%20%u041F%u043E%u0434%u0440%u043E%u0431%u043D%u043E%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%5Cn%22%20+%20ttt%3B%0A%20%20%20try%20%7B%0A%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%20%0A%20%20%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28context%2C%20null%29%3B%0A%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%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
Отредактировано bunda1 (29-07-2014 08:46:25)
Отсутствует
bunda1
подскажи, что подправить в коде, чтобы убрать появившийся разделитель между Memory Monitor и history-dropmarker ?
Просто дропмаркер у меня скрыт стилем и образовывающийся разделитель ни к чему...
Отсутствует
Inko7
в userChrome.css
Отредактировано bunda1 (06-11-2011 11:36:29)
Отсутствует
bunda1
И ещё подскажите плиз, как уменьшить интервалы.
Добавлено 06-11-2011 00:34:09
bunda1
У меня показатели отличаются от диспетчера задач на 70-130МБ
Отредактировано mserv (06-11-2011 00:34:09)
Отсутствует
mserv
в userChrome.css
#MemoryDisplay{ -moz-appearance: none !important; border: 0px !important; padding:0px !important; margin-right:-5px !important; margin-left:-3px !important; }
У меня показатели точно совпадают с диспетчером задач.
пробуй так:
about:config
dom.ipc.plugins.enabled - false
Отредактировано bunda1 (06-11-2011 11:36:14)
Отсутствует
У меня показатели отличаются от диспетчера задач на 70-130МБ
А диспетчер задач "родной"(виндовый)? Process Hacker показывает зарезервированную память, taskmanager - рабочий набор, а Process Explorer - и то, и другое. У меня совпадает c диспетчером задач
pcxFirefox - лучшая сборка Лисы!
Отсутствует
в userChrome.css
Спасибо
пробуй так:
about:config
dom.ipc.plugins.enabled - false
Так вообще не показывает, остаётся только МВ
Добавлено 06-11-2011 01:33:15
bunda1
Создал новую кнопку только с этим кодом, и стало всё ОК.
Отредактировано mserv (06-11-2011 01:33:15)
Отсутствует
На Memory Monitor можно навесить свою команду и он будет работать как CB кнопка.
Пример, после
добавляем
memoryPanel.addEventListener("click", function(){ //Добавить страницу в закладки PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId, content.location.href, content.document.title); }, true);
или добавляем
memoryPanel.addEventListener("click", function(){ //Без запроса, добавить страницу в закладки в Меню закладок. var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"]. getService (Components. interfaces. nsINavBookmarksService); var br = gBrowser. getBrowserForTab (gBrowser. mCurrentTab); bmsvc. insertBookmark (bmsvc. bookmarksMenuFolder, br. webNavigation. currentURI, bmsvc. DEFAULT_INDEX, gBrowser. mCurrentTab. label); }, true);
Отредактировано bunda1 (08-11-2011 20:41:40)
Отсутствует
А мне идея понравилась, но не понравилось, что не работает с Add Bookmark Here ², поэтому оставил первый вариант [CB]Memory Monitor.
Отсутствует
Почему.
Звездочка как-то привычнее, да и по логике эти функции не связаны друг с другом. А еще на скрине видно что индикатор немного залезает на кнопку go. У меня например звездочка и go на одном месте находятся и заменяют друг друга (когда фокус на странице там звездочка, когда в адресной строке, там go), а тут такое не получится, потому что индикатор шире чем кнопка go/
Отсутствует
А еще на скрине видно что индикатор немного залезает на кнопку go.
Не проблема, если изменить #MemoryDisplay{margin-right:
А можете сделать вариант кода с заменой не звёздочки, а треугольника выпадающего списка?
К сожалению, не знаю как это сделать.
Но можно зделать так - кнопка go становится желтого цвета, если текущая страница уже есть в закладках + если щелкнуть правой клавишей мыши на go button, откроется диалог добавление страницы в закладки.
Отредактировано bunda1 (09-11-2011 20:45:16)
Отсутствует
Но можно зделать так - кнопка go становится желтого цвета, если текущая страница уже есть в закладках + если щелкнуть правой клавишей мыши на go button, откроется диалог добавление страницы в закладки.
А у меня этой go нет совсем, и уже не помню, куда она делась, когда я её убрал… Да и как управление закладками меня устраивает звёздочка, я просто просил убрать треугольник, а его функции приделать к [CB]Memory Monitor, что бы сэкономить место.
Отсутствует
bunda1
У меня показатели отличаются от диспетчера задач на 70-130МБ
У меня на 2 - 3МБ
на 5мб разница, не думаю что это много)
Да не, не много.
Не успевает за диспетчером обновятся.
Не успевает за диспетчером обновятся.
интервал обновления можно изменить в коде
Отсутствует