Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javascript读取当前文档的大小_Javascript_Performance_Dom - Fatal编程技术网

从Javascript读取当前文档的大小

从Javascript读取当前文档的大小,javascript,performance,dom,Javascript,Performance,Dom,我开始用它来衡量绩效。很有希望。虽然它允许我测量延迟、带宽和页面加载时间,但我也对尝试获取在服务器端呈现初始HTML页面所需的时间感兴趣。虽然记录浏览器开始解析javascript的时间(接近它最初到达的时间)似乎很简单,但为了估计服务器时间,我需要计算出要扣除多少网络时间。为此,我需要知道html文档有多大 我如何从Javascript中分辨出这一点 文档对象似乎没有innerHtml属性 我试过了 totsize=document.HEAD.innerHTML.length + docume

我开始用它来衡量绩效。很有希望。虽然它允许我测量延迟、带宽和页面加载时间,但我也对尝试获取在服务器端呈现初始HTML页面所需的时间感兴趣。虽然记录浏览器开始解析javascript的时间(接近它最初到达的时间)似乎很简单,但为了估计服务器时间,我需要计算出要扣除多少网络时间。为此,我需要知道html文档有多大

我如何从Javascript中分辨出这一点

文档对象似乎没有innerHtml属性

我试过了

totsize=document.HEAD.innerHTML.length + document.BODY.innerHTML.length;
头部和身体实体出现在Firefox的DOM浏览器中,但是当我尝试上面的代码时,我得到了一个未定义的错误,也尝试了“头部”,但没有效果

有什么想法吗

(请注意,javascript位于一个单独的文件中,在大多数情况下都会被缓存,所以这不是什么大问题)

我确实尝试过谷歌——但我只是得到了很多描述html元素屏幕大小和窗口尺寸的页面:(


TIA

关于
document.documentElement.innerHTML.length
如何?

document.documentElement.innerHTML.length
根据@meder可能已经足够了。它不会精确,因为它返回当前页面DOM的序列化,而不是原始HTML源

对于不重要的静态页面,这里有一个额外的close标记,那里有不同的属性引用……但是如果有很多页面内容是通过脚本动态创建的,那么这些内容将计入
innerHTML
,尽管原始源代码中不存在,这可能会导致计算失败

如果需要找出实际的资源长度,则需要再次获取页面,可以在当前URL上使用
XMLHttpRequest

var xhr= new XMLHttpRequest();
xhr.onreadystatechange= function() {
    if (this.readyState!==4) return;
    alert(this.responseText.length);
};
xhr.open('GET', location.href, true);
xhr.send();
(如果页面是POST请求的结果,则无法执行此操作。)

这将为您提供一个字符大小。如果您使用单字节编码(如ISO-8859-1),则网络加载字节大小将相同。如果您使用UTF-8,则可以通过将字符串转换为UTF-8字节作为代码单位来查找字节大小,这有一个快速的惯用技巧:

var bytes= unescape(encodeURIComponent(this.responseText));
alert(bytes.length);
如果您不幸使用了非UTF-8多字节编码,那么您在这里实际上做不了什么;您必须为编码包含完整的映射表,而对于东亚编码,映射表将非常大。

这个怎么样

/*
* This script determines the size of the current page in bytes.
* But why does the 2nd length differ from the first?
*/
var len=document.getElementsByTagName("html")[0].innerHTML.length;
var len2=document.getElementsByTagName("head")[0].innerHTML.length + document.getElementsByTagName("body")[0].innerHTML.length;
//document.body.innerHTML.length
alert('Page Size: '+len +' bytes');
alert('Page Size2: '+len2+' bytes');
它似乎工作正常,但不是很好。因为它提供了两种不同的长度。但为什么? 啊!这格式真让我受不了

编辑:有人能帮我修改一下格式吗?我的浏览器显然不能正常工作。Firefox15.x


编辑:固定格式

谢谢meder-这正是我想要的:)
头和
体应该是小写的,顺便说一句。
outerHTML
document.documentElement.outerHTML.length
)可以让你知道整个文档的大小,包括
标记及其属性。。