我在使用调用getResponseHeader
Greasemonkey 脚本时获得的值时遇到问题。
首先,我声明了以下全局变量:
size = 0;
maxS = 153600; // Max. size (bytes).
一旦网站完全加载,我的 main 函数就会被调用,并在其中获取某个 div 中的所有图像(此处未显示,因为它不相关):
function main() {
...
var imgs = posts[i].getElementsByTagName('img');
for (var j = 0; j < imgs.length; ++j) {
getFileSize(imgs[j].src, responseHandler);
if (size > maxS)
// Do something
}
...
}
这就是getFileSize
工作原理:
var getFileSize = function(address, responseHandler) {
var req = new XMLHttpRequest();
req.open('head', address, true);
req.onreadystatechange = responseHandler;
req.send(null);
};
var responseHandler = function(resp) {
if (this.readyState == 1)
this.abort();
size = this.getResponseHeader("Content-length");
};
问题是即使我在句子之后检查size的值
size = this.getResponseHeader("Content-length");
该值是我期望的值,在 main 函数中,当它到达这部分代码时,它的值仍然为 0:
if (size > maxS)
// Do something
我试图通过检查我在这个网站上找到的其他一些问题来找出答案,我猜这与同步有关,但我真的不知道如何解决这个问题。