getResponseHeader
Greasemonkeyスクリプトを呼び出したときに取得した値を使用するのに問題があります。
まず、次のグローバル変数を宣言しました。
size = 0;
maxS = 153600; // Max. size (bytes).
Webサイトが完全に読み込まれると、メイン関数が呼び出され、その内部で特定の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 = this.getResponseHeader("Content-length");
値は私が期待する値です。メイン関数では、コードのこの部分に到達したときの値はまだ0です。
if (size > maxS)
// Do something
私はこのウェブサイトで見つけた他のいくつかの質問をチェックして答えを見つけようとしました、そしてそれは同期と関係があると思いますが、私はこの問題を修正する方法を本当に知りません。