0

我使用下面的代码来获取网页(html)

var  htmlString=null;

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://www.yahoo.com");//can change to any web address 
xhr.onreadystatechange = function() {

     htmlString=htmlString+xhr.responseText;
     if(xhr.statusText=="200 OK\r" ){ 
       log (global.htmlString.length);
     }
}

但它总是获取页面的一部分,而不是整个 html 代码 是否有任何参数可以设置返回 html 代码的长度?

欢迎您的评论

4

1 回答 1

0

会有多个readystatechange事件。只有在xhr.readyState === XMLHttpRequest.DONE === 4.

此外,htmlString = null; ...; htmlString=htmlString+xhr.responseText;在许多方面都是虚假的。第一次就可以了htmlString = null + "text" === "nulltext。之后它会.responseText一次又一次地添加(到目前为止检索到的),同时通过状态。

此外,在相关说明中,您应该检查xhr.status == 200,而不是xhr.statusText == randomString。在 200 的情况下,Web 服务器不一定会发送“OK”。

阅读XMLHttpRequest文档

这样的事情应该会更好:

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://www.yahoo.com");
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 /* DONE */) {
     console.log(xhr.responseText.length);
     // Do something with it...
  }
}
xhr.send();
于 2013-09-10T07:24:43.287 回答