Javascript Can';t使用通过调用getResponseHeader获得的值
在对Greasemonkey脚本调用Javascript Can';t使用通过调用getResponseHeader获得的值,javascript,xmlhttprequest,greasemonkey,getresponse,Javascript,Xmlhttprequest,Greasemonkey,Getresponse,在对Greasemonkey脚本调用getResponseHeader时,我无法使用获得的值 首先,我声明了以下全局变量: size = 0; maxS = 153600; // Max. size (bytes). 一旦网站被完全加载,我的主要功能被调用,在其中我得到某个div中的所有图像(此处不显示,因为它不相关): 问题是,即使我在句子后检查大小的值 size = this.getResponseHeader("Content-length"); 该值是我期望的值,在主函数中,当它到达
getResponseHeader
时,我无法使用获得的值
首先,我声明了以下全局变量:
size = 0;
maxS = 153600; // Max. size (bytes).
一旦网站被完全加载,我的主要功能被调用,在其中我得到某个div中的所有图像(此处不显示,因为它不相关):
问题是,即使我在句子后检查大小的值
size = this.getResponseHeader("Content-length");
该值是我期望的值,在主函数中,当它到达代码的这一部分时,其值仍然为0:
if (size > maxS)
// Do something
我试图通过检查我在这个网站上发现的一些其他问题来找出答案,我猜这与同步有关,但我真的不知道如何解决这个问题。图像都在同一台服务器上,对吗
XMLHttpRequest()
将不会执行跨域请求(没有一些新的环,这些环无论如何都不适用于Greasemonkey上下文)
该代码存在一些问题:
XMLHttpRequest()
HEAD
请求this.readyState==1
不正确this.readyState==this.OPENED
更好对于同步操作,请更改
getFileSize()
。这样说吧:
getFileSize (imgs[j].src);
function getFileSize (address) {
var request = new XMLHttpRequest();
request.open ('HEAD', address, false); //-- false = Synchronous
request.send (null);
size = -666; // Error, or AJAX fail.
if (request.status === 200) {
size = request.getResponseHeader ("Content-length");
}
}
定义如下:
getFileSize (imgs[j].src);
function getFileSize (address) {
var request = new XMLHttpRequest();
request.open ('HEAD', address, false); //-- false = Synchronous
request.send (null);
size = -666; // Error, or AJAX fail.
if (request.status === 200) {
size = request.getResponseHeader ("Content-length");
}
}
注:
GM\u xmlhttpRequest()
——它的操作稍有不同,对于同步AJAX来说无法正常工作(我上次检查时是几个月前)李>
非常感谢你!你的回答对我很有帮助,很有启发性,问题已经解决了。很抱歉,我不能投你的票,因为我没有足够的声誉。很高兴你的问题解决了!此外,你可能还不能投票,但如果这对你有帮助,你可以。