Search code examples
javascriptdownloadhref

Calling href from onclick method does not work


Hello i was wondering how can i invoke an a click from a button onclick event:

I have made it work so far with these 2 methods :

<a class="button" type="application/octet-stream"  href="http://localhost:5300/File" download>Click here for dld</a>

<input type="button"  onclick="location.href='http://localhost:5300/File';" value="Download"/>

But i can not make it work with js ; i have tried like this:

 <button  onclick="Save('http://localhost:5300/File')">Download</button>

 function Save(url){
            var link=document.createElement('a');
            link.url=url;
            link.name="Download";
            link.type="application/octet-stream";
            document.body.append(link);
            link.click();
            document.body.removeChild(link);
            delete link;
        }

P.S I need to use the <button></button> and not the input !


Solution

  • Your code creates a link, clicks it then deletes it. You can instead just run window.location.href as you did in the HTML example.

    onclick = "Save('http://localhost:5300/File')" > Download < /button>
    
    function Save(url) {
      window.location.href = url;
    }
    <button onclick="Save('http://localhost:5300/File')">Download</button>

    Or, if you stick to your method of creating a link, you should set href for the link, not url.

    function Save(url) {
      var link = document.createElement('a');
      link.href = url;
      link.name = "Download";
      link.type = "application/octet-stream";
      document.body.append(link);
      link.click();
      document.body.removeChild(link);
    }
    <button onclick="Save('http://localhost:5300/File')">Download</button>