微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检测 HTML 锚标签下载选择

如何解决检测 HTML 锚标签下载选择

我使用锚标记为我的用户提供一个选项,以将某些客户端生成的数据下载到文件中。我使用以下代码

function GenerateTextFile (FileType,FileName,FileContents)
{
var data = new Blob ([FileContents],{type: 'text/plain'});
var url = window.URL.createObjectURL (data);
var link = document.createElement ("a");
link.download  = FileName + "." + FileType ;
link.href      = url ;
link.innerText = " Click here to download" ;
};

稍后我调用以下内容进行整理:

window.URL.revokeObjectURL (url);

请有人告诉我如何检测用户是否点击了锚标签?我想删除或更改文本,以便下载不会被激活两次。

解决方法

function GenerateTextFile(FileType,FileName,FileContents) {
  var data = new Blob([FileContents],{
    type: 'text/plain'
  });
  var url = window.URL.createObjectURL(data);
  var link = document.createElement("a");
  link.download = FileName + "." + FileType;
  link.href = url;
  link.innerText = " Click here to download";
  link.id = Date.now();
  link.setAttribute("onclick","removeDownload('" + link.id + "')");
  let links = document.getElementById("links");
  links.appendChild(link);
};

function removeDownload(id) {
  document.getElementById(id).remove();
}
<button onclick="GenerateTextFile('txt','test','lorem ipsum');">Create Dummy DL</button>

<div id="links"></div>

注意:文件的下载在代码段中不起作用。不过,它可以在沙箱之外工作。这将 onclick 元素的 a 事件与动态 id(纪元)一起使用,然后调用 removeDownload 方法,该方法将通过其 {{ 1}} 并删除它。

,

您可以向链接添加点击侦听器。或者有什么你不想要的原因?

link.onclick = function(){console.log("link was clicked");}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。