linkElement.dispatchevent对象不支持此操作IE

时间:2017-06-21 11:47:32

标签: internet-explorer dispatchevent

我的代码就像吼叫:

         var file = new Blob([response.data], { type: 'application/pdf' });

            if (file.size != 0) {

                var objectUrl = URL.createObjectURL(file);

                var linkElement = document.createElement('a');

                linkElement.setAttribute('href', objectUrl);

                linkElement.setAttribute("download", fileName);

                var clickEvent;
                //This is true only for IE,firefox
                if (document.createEvent) {
                    // To create a mouse event , first we need to create an event and then initialize it.
                    clickEvent = document.createEvent("MouseEvent");
                    clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                }
                else {
                    clickEvent = new MouseEvent('click', {
                        'view': window,
                        'bubbles': true,
                        'cancelable': true
                    });
                }                   
                linkElement.dispatchEvent(clickEvent);

此代码适用于chrome& mozila,仅限于IE 10或更高版本。

任何人都可以帮助我让它运作起来吗?

感谢。

1 个答案:

答案 0 :(得分:1)

此方法不适用于所有浏览器。 所以你可以简单地使用Filesaver.js https://github.com/eligrey/FileSaver.js

在您的页面中包含Filesaver.js,并使用此文件中的saveAs方法,如下所示。

var file = new Blob([response.data], { type: 'application/pdf' });
if (file.size != 0) 
{
  $window.saveAs(file, fileName);                   
}