>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Получить размер загруженной страницы http://forum.mozilla-russia.org/viewtopic.php?id=57524 |
Magneto > 26-12-2012 16:44:51 |
Подскажите как можно получить размер загруженной страницы из расширения. |
littleleshy > 26-12-2012 18:37:03 |
Magneto |
Magneto > 27-12-2012 14:44:52 |
Для того чтоб получить вес загруженной страницы (это чистый html, без css, image и прочего) можно воспользоваться следующим скриптом: Выделить код Код:function getPageSize() { var pageSize = null, cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService), httpCacheSession = cacheService.createSession("HTTP", 0, true); httpCacheSession.doomEntriesIfExpired = false; var cacheEntryDescriptor = httpCacheSession.openCacheEntry(content.document.location.toString().replace(/#.*$/, ""), Components.interfaces.nsICache.ACCESS_READ, false); if (cacheEntryDescriptor) { pageSize = Math.round(cacheEntryDescriptor.dataSize / 1024 * 100) / 100; } alert('Размер страницы ' + pageSize + 'KB'); } // Ждем загрузки страницы if (content.document && content.document.readyState === 'complete') { getPageSize(); } else { content.addEventListener('load', getPageSize, false); } |
littleleshy > 28-12-2012 00:15:05 |
Magneto пишет
Magneto пишет
o_0, это что за HTML такой? |
geczu > 28-12-2012 00:20:13 |
Magneto |
littleleshy > 28-12-2012 00:26:59 |
geczu пишет
Вес получить можно, но это не
. |
Sid > 28-12-2012 00:29:57 |
littleleshy |
littleleshy > 28-12-2012 00:39:12 |
Sid |
Magneto > 26-02-2013 20:15:24 |
Выделить код Код:function getPageSize() { var pageSize = null, cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService), httpCacheSession = cacheService.createSession("HTTP", 0, true); httpCacheSession.doomEntriesIfExpired = false; var cacheEntryDescriptor = httpCacheSession.openCacheEntry(content.document.location.toString().replace(/#.*$/, ""), Components.interfaces.nsICache.ACCESS_READ, false); if (cacheEntryDescriptor) { pageSize = Math.round(cacheEntryDescriptor.dataSize / 1024 * 100) / 100; } alert('Размер страницы ' + pageSize + 'KB'); } // Ждем загрузки страницы if (content.document && content.document.readyState === 'complete') { getPageSize(); } else { content.addEventListener('load', getPageSize, false); } В новых версиях Firefox вышеприведенный код перестал работать, вот ошибка: Выделить код Код:Ошибка: NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsICacheSession.openCacheEntry] Ошибка в этой строке: Выделить код Код:var cacheEntryDescriptor = httpCacheSession.openCacheEntry(content.document.location.toString().replace(/#.*$/, ""), Components.interfaces.nsICache.ACCESS_READ, false); Подскажите как решить. |
Magneto > 27-02-2013 15:13:45 |
okkamas_knife спасибо. Выделить код Код:var pageSize = null, nsICacheService = Components.interfaces.nsICacheService, ACCESS_READ = Components.interfaces.nsICache.ACCESS_READ, cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(nsICacheService), httpCacheSession = cacheService.createSession("HTTP", 0, true); function openCacheEntry( url, callBack ) { var tries = 0, checkCacheListener = { onCacheEntryAvailable : function ( entry, access, status ) { if ( entry || tries === 1 ) { callBack(entry); } else { tries++; } } }; httpCacheSession.asyncOpenCacheEntry( url, ACCESS_READ, checkCacheListener, true ); } httpCacheSession.doomEntriesIfExpired = false; openCacheEntry( content.document.location.toString().replace(/#.*$/, ""), function (cacheEntry) { if (cacheEntry) { pageSize = Math.round(cacheEntry.dataSize / 1024 * 100) / 100; } alert('Размер страницы ' + pageSize + 'KB'); } ); |