2
私は、AJAX呼び出しがあるプロジェクトで作業しています。このAJAX呼び出しでは、Excelファイルを含むBLOBで応答します。私は、コードをダウンロードしてファイルを開き、応答を取得します。Firefox a.clickはブレークポイントなしで起動しません
var blob = new Blob([response.data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
var objectUrl = URL.createObjectURL(blob);
var a = document.createElement("a");
var header = response.headers("Content-Disposition");
a.download = header.substring(header.indexOf("filename=") + "filename=".length);
a.href = objectUrl;
document.body.appendChild(a);
console.debug("Clicking a tag");
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(objectUrl);
このコードはchromeではうまく動作しますが、firefoxではa.click()が起動しても何も起こりません。コールバックが起こっていることを知っているので、デバッグステートメントが表示されます。また、何らかの理由で、私がa.click()
にブレークポイントを置くと、それは完全に動作します。
クリックがデバッグモードでのみ機能する理由を説明できますか?
ませサイコロを。私は結果を出さずにそれを試しました。 – user2752635
@ user2752635:私は間違っているかもしれません、あなたは*クリック*の後にそれを必要とするかもしれません。上記の両方の場所に例を追加しました。私はまた、約1年前にFirefoxで何かを覚えていることを覚えています。ここで '0'タイムアウトは動作しませんでしたが、' 10'タイムアウトはありませんでした。 (その時点で私は全面的な考え方を再考することにしました。私はそれに慣れていませんでしたので...-)) –
これは私の問題を解決します。私は 'setTimeout(fn、0)'を自分のコード(特に入れ子になっている)に置いても大丈夫ですが、うまくいけば動作します。 – user2752635