Javascript 如何在Internet Explorer中删除Blob?
我正在使用Javascript 如何在Internet Explorer中删除Blob?,javascript,internet-explorer,blob,Javascript,Internet Explorer,Blob,我正在使用 $.ajax({ url: '/search', data: $('form').serialize(), type: 'POST', async: true, // process the response from the backend success: function(response) { cons
$.ajax({
url: '/search',
data: $('form').serialize(),
type: 'POST',
async: true,
// process the response from the backend
success: function(response) {
console.log(response);
if (response.search_text !== "") {
$('#search_result_text').html("Your search " + "<font color='red'>" + response.search_text +
"</font>" + " in category " + "<font color='red'>" + response.category + "</font>" +
" has " + "<font color='red'>" + response.amount_hits_search_text + "</font>" + " hits in:")
$('#hits_document').html("all documents: " + "<font color='red'>" +
response.amount_hits_document_total + "</font>" + "<br>" + "mgmt. documents: " +
"<font color='red'>" + response.amount_hits_documents_mgmt + "</font>")
export_csv.style.visibility = "visible";
}
// function to export all hit results
$('#export_csv').click(function() {
console.log("trying to download")
var blob = new Blob([response.csv], {
type: "text/csv;charset=utf-8;"
});
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(blob, response.search_text + " " + response.category + ".csv")
} else {
var link = document.createElement("a");
if (link.download !== undefined) { // feature detection
// Browsers that support HTML5 download attribute
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("target", "_blank")
link.setAttribute("download", "fileName.csv");
link.style = "visibility:hidden";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
link.removeChild()
URL.revokeObjectURL(url)
}
}
})
)}
)}
$.ajax({
url:“/search”,
数据:$('form')。序列化(),
键入:“POST”,
async:true,
//处理来自后端的响应
成功:功能(响应){
控制台日志(响应);
如果(response.search_text!==“”){
$(“#搜索结果_文本”).html(“您的搜索”+“”+response.search_文本+
类别“+”中的“+”+响应。类别+”+
“有”+“”+响应。数量\点击次数\搜索次数\文本++“”+点击次数:”)
$('#hits_document').html(“所有文档:+”)+
response.amount\u hits\u document\u total++“
”++“管理文档:”+
“+response.amount\u hits\u documents\u mgmt+”)
export_csv.style.visibility=“可见”;
}
//函数导出所有命中结果
$(“#导出_csv”)。单击(函数(){
日志(“尝试下载”)
var blob=新blob([response.csv]{
类型:“文本/csv;字符集=utf-8;”
});
if(navigator.msSaveBlob){//IE 10+
navigator.msSaveBlob(blob,response.search_text+“”+response.category+“.csv”)
}否则{
var link=document.createElement(“a”);
如果(link.download!==未定义){//功能检测
//支持HTML5下载属性的浏览器
var url=url.createObjectURL(blob);
link.setAttribute(“href”,url);
link.setAttribute(“目标”,“空白”)
link.setAttribute(“下载”、“文件名.csv”);
link.style=“可见性:隐藏”;
document.body.appendChild(链接);
link.click();
document.body.removeChild(link);
link.removeChild()
revokeObjectURL(URL)
}
}
})
)}
)}
为Internet Explorer创建blob
“导出csv”按钮生成一个csv,我可以在以后下载。但我意识到,blob并没有被“覆盖”。当我创建了3个CSV文件并通过每次单击下载它们时,第四个CSV和单击将导致下载所有以前的3个CSV/blob文件
下载后如何删除每个blob
提前谢谢。这是@ChrisG的大道具
我可以简单地通过添加$(“#export_csv”).off(“click”);在ajax请求之前。您能显示更多相关代码吗@ChrisG这个blob文件是一个来自Ajax响应的csv。你肯定Ajax响应是好的吗?如何创建这些CSV文件?请显示更多的代码,我们无法帮助您处理这些小信息。@ChrisG是的,响应非常好。下载的CSV文件很好(utf-8等)。每次Ajax响应我都会得到另一个CSV文件,我将其作为blob下载。对于非Internet Explorer部分,有URL.revokeObjectURL(URL)方法。我正在为Internet explorer寻找类似的东西,以便在下载后删除blob。问题是您一直在调用
$(“#export_csv”)。单击(…)
,添加一个新的事件侦听器,从而在每次ajax请求完成时向按钮添加一个新的下载。因此,在您第二次搜索之后,单击该按钮将触发两次下载。然后是三个。等等。这不是关于删除blob,而是关于在页面加载时只分配一次单击处理程序,并且只更新下载的内容。感谢您发布此问题的解决方案。我建议你试着在48小时后将自己的答案标记为这个问题的可接受答案。它可以在未来帮助其他社区成员解决类似的问题。谢谢你的理解。