dispatchEvent在Internet Explorer 11中的javascript中不起作用

问题描述 投票:0回答:3

在我的网站上,我有一个javascript,我希望在其中打开文件保存对话框。目的是将来自Web服务器的某些数据保存在文本文件中。

我正在尝试使用本文中显示的代码段:

[Using HTML5/JavaScript to generate and save a file

准确地说:

function download(filename, text) {
    var pom = document.createElement('a');
    pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
    pom.setAttribute('download', filename);

    if (document.createEvent) {
        var event = document.createEvent('MouseEvents');
        event.initEvent('click', true, true);
        pom.dispatchEvent(event);
    }
    else {
        pom.click();
    }
}

此功能非常适合Firefox和Chrome。但是,对于Internet Explorer 11,它不起作用。当执行该指令时...

pom.dispatchEvent(event);

...什么都没有发生。保存对话框未打开,浏览器的Java控制台中未显示任何错误。事件似乎迷失了。任何帮助将不胜感激。

javascript modal-dialog internet-explorer-11 dispatchevent
3个回答
0
投票

这在现代浏览器中得到广泛支持。但是,

较旧版本的IE支持等效的专有EventTarget.fireEvent()方法。

来源:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent


0
投票

您的代码在Internet Explorer 11.836.18362.0中对我来说很好用,但是,话虽如此,MDN建议不要使用您使用的技术。 createEventinitEvent被描述过,可能会产生不可预测的结果,并且可能随时被丢弃。请改用Event()。请参阅Event()initEvent MDN文档页面。


0
投票

我尝试从侧面测试问题,可以看到该文件未在IE 11浏览器中下载。

下面是可用于IE和其他浏览器的修改后的代码。它将正确下载文件。

initEvent

在IE 11浏览器中的输出:

createEvent

© www.soinside.com 2019 - 2024. All rights reserved.