【发布时间】:2012-05-14 08:48:23
【问题描述】:
我在使用我在 Greasemonkey 脚本上调用 getResponseHeader 时获得的值时遇到问题。
首先,我声明了以下全局变量:
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
我试图通过检查我在这个网站上找到的其他一些问题来找出答案,我猜这与同步有关,但我真的不知道如何解决这个问题.
【问题讨论】:
标签: javascript xmlhttprequest greasemonkey getresponse