如何在javascript中单击动态生成的URL?

如何在javascript中单击动态生成的URL?,javascript,mouseevent,Javascript,Mouseevent,当用户单击某个按钮时,我有一个来自后端的url。此url包含一个文件。单击url时,应下载该文件。我尝试的方法是动态生成锚标记,并使用。我写的代码如下: const link = document.createElement('a'), event = new MouseEvent('click'); link.href = data; link.dispatchEvent(event); 但这会将我重定向到url,而不是下载它。令人惊讶的是,几天前,这段代码运行良好。最好的方法

当用户单击某个按钮时,我有一个来自后端的url。此url包含一个文件。单击url时,应下载该文件。我尝试的方法是动态生成锚标记,并使用。我写的代码如下:

const link = document.createElement('a'),
      event = new MouseEvent('click');

link.href = data;
link.dispatchEvent(event);
但这会将我重定向到url,而不是下载它。令人惊讶的是,几天前,这段代码运行良好。最好的方法是什么

  • 哪个应该独立于浏览器
  • 我不能使用jquery,我用react编写,想用javascript编写
  • [编辑]
    如果这个问题重复或问错了,请评论。我找不到这个特定的问题,大多数答案都使用jquery。

    尝试以下代码

    var url = data; 
    var element = document.createElement('a');
    element.href = url;
    element.setAttribute('download', name);
    element.setAttribute('target', '_blank');
    document.body.appendChild(element); //Append the element to work in firefox
    element.click();
    

    link.download=true;您还可以向文件中添加服务器端头以强制其下载…因为您提到此代码以前正在工作,所以它可以更改的一件事是来自服务器的响应,例如,不将文件作为文件返回attachment@derloopkat,之前浏览器允许我打开文件(或下载)从新选项卡中,如果我将其粘贴到浏览器选项卡上,但现在它不允许我打开,可能是文件受保护或其他原因,但我在某个地方看到,我们可以下载这样的文件。单击后是否需要删除child?我使用了此解决方案,并在控制台中对React发出警告:警告:出于性能原因,此合成事件被重用。如果您看到了这一点,那么您正在访问一个已发布/无效的合成事件的属性
    clientY
    。这被设置为null。如果必须保留原始合成事件,请使用event.persist()。我知道事件池,但我真的不明白为什么它在click()事件上给我这个警告