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小时后将自己的答案标记为这个问题的可接受答案。它可以在未来帮助其他社区成员解决类似的问题。谢谢你的理解。