Javascript文件附件-防止打开新选项卡

Javascript文件附件-防止打开新选项卡,javascript,Javascript,这段代码非常适合使用HTTP GET针对安全服务下载文件。问题是代码总是打开一个新的浏览器选项卡(与启动下载的页面相同)。有没有办法阻止这种情况发生 var url = '/blah/blah/abc.zip'; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'arraybuffer'; xhr.onload = function () {

这段代码非常适合使用HTTP GET针对安全服务下载文件。问题是代码总是打开一个新的浏览器选项卡(与启动下载的页面相同)。有没有办法阻止这种情况发生

    var url = '/blah/blah/abc.zip';
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'arraybuffer';
    xhr.onload = function () {
        if (this.status === 200) {
            var filename = "";
            var disposition = xhr.getResponseHeader('Content-Disposition');
            if (disposition && disposition.indexOf('attachment') !== -1) {
                var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
                var matches = filenameRegex.exec(disposition);
                if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
            }
            var type = xhr.getResponseHeader('Content-Type');
            var blob = new Blob([this.response], { type: type });
            if (typeof window.navigator.msSaveBlob !== 'undefined') {
                window.navigator.msSaveBlob(blob, filename);
            } else {
                var URL = window.URL || window.webkitURL;
                var downloadUrl = URL.createObjectURL(blob);
                if (filename) {
                    var a = document.createElement("a");
                    if (typeof a.download === 'undefined') {
                        window.location = downloadUrl;
                    } else {
                        a.href = downloadUrl;
                        a.target = '_blank';
                        a.download = filename;
                        document.body.appendChild(a);
                        a.click();
                    }
                } else {
                    window.location = downloadUrl;
                }
                setTimeout(function () { URL.revokeObjectURL(downloadUrl); }, 100);
            }
        }
    };
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    xhr.setRequestHeader('Authorization', 'Token ' + $window.sessionStorage.token);
    xhr.send("");

扔掉
a.target='\u blank'
?这似乎可行,但令人恼火的是,这是一个单页应用程序,文档正文消失了。