撤消锚点中的返回false

时间:2015-12-29 11:16:15

标签: javascript

我有以下下载链接(客户端):

<a href="#" download="file.txt" onclick="return false;">download</a>

我希望return false;能够在这里,因为我想在下载之前做一些事情,并在发生错误时阻止下载。

但我也想在一切正常时下载文件,但它不起作用。我在鼠标点击事件上尝试了stopPropagationpreventDefault,但它无法正常工作。

我该如何处理?

2 个答案:

答案 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);
});