我有以下下载链接(客户端):
<a href="#" download="file.txt" onclick="return false;">download</a>
我希望return false;
能够在这里,因为我想在下载之前做一些事情,并在发生错误时阻止下载。
但我也想在一切正常时下载文件,但它不起作用。我在鼠标点击事件上尝试了stopPropagation
和preventDefault
,但它无法正常工作。
我该如何处理?
答案 0 :(得分:1)
这样的事情对你有用吗?
https://jsfiddle.net/y8t1eykr/
<a href="#" onclick="run()">download</a>
<a href="#" id="downloadFile" download="https://upload.wikimedia.org/wikipedia/commons/e/e9/Official_portrait_of_Barack_Obama.jpg" style="display: none;"></a>
function run() {
var test = prompt("Write \"yes\"");
if(test == "yes") {
document.getElementById("downloadFile").click();
} else {
alert("You didn't write \"yes\"");
}
}
基本上你有两个要素。一个充当您的按钮,一个充当下载。如果单击按钮并执行操作,请单击下载元素,它将开始下载文件。
这有意义吗?我怀疑你可以在同一个文件上设置download="file.txt"
和onclick="someFunc()
,因为Javascript无法强行下载。
答案 1 :(得分:0)
您可以按照评论中的说明使用Object
属性,也可以在不改变HTML的情况下在javascript中收听onclick="somefunc():
事件,就像JS Fiddle一样。
点击会阻止使用javascript click
锚点的默认行为:
.preventDefault()
var link = document.getElementById('download'),
file = link.getAttribute('href');
link.addEventListener('click', function(evt) {
evt.preventDefault();
alert('you are trying to download ' + file);
});