2
我正在開發一個項目,我們有一個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:我可能會誤解,你可能需要*點擊後。我已經在上面兩個地方添加了一個示例。我還記得一年前在Firefox上有一些事情,'0'超時無效,但'10'超時沒有。 (在這一點上,我決定重新考慮我的整個方法,因爲我對此並不滿意:-)) –
這爲我解決了這個問題。我不喜歡在我的代碼中使用'setTimeout(fn,0)',但是如果它有效的話,它可以工作。 – user2752635