Страницы: 1
Magneto
Мой ответ будет идентичен этому.
Отсутствует
Для того чтоб получить вес загруженной страницы (это чистый 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); }
Отсутствует
чистый html
function … var … if
o_0, это что за HTML такой?
Отсутствует
можно получить вес самой страницы
Вес получить можно, но это не
чистый html
.
Отсутствует
Sid
О, спс, разул глаза. Придирки к посту отменяются.
Отсутствует
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 (26-02-2013 20:19:29)
Отсутствует
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'); } );
Отсутствует
Страницы: 1