Вызов href из метода onclick не работает - PullRequest
0 голосов
/ 14 февраля 2019

Здравствуйте, мне было интересно, как я могу вызвать a клик из события button onclick:

До сих пор я сделал так, чтобы он работал с этими двумя методами:

<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"/>

Но я не могу заставить его работать с js;Я пытался так:

 <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;
        }

PS Мне нужно использовать <button></button>, а не input!

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

const btn = document.querySelector('button');
btn.addEventListener('click', function(e) {
    e.preventDefault();
    save('http://localhost:5300/File');
});

function save(url) {
    let 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);
    delete link;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>Download</button>
0 голосов
/ 14 февраля 2019

Вам действительно нужно создать элемент a?Если нет, я бы использовал window.location.href, что аналогично нажатию на ссылку.

Пример:

function Save(url){
    window.location.href = url;
}

Единственная проблема с этим может быть, если вы ссылаетесь наHTTP (небезопасный) сайт с HTTPS (защищенного) сайта.

0 голосов
/ 14 февраля 2019

Ваш код создает ссылку, щелкает по ней и затем удаляет ее.Вместо этого вы можете просто запустить window.location.href, как вы это делали в примере с HTML.

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

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

Или, если вы придерживаетесь метода создания ссылки, вы должны установить href для ссылки, а не 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>
0 голосов
/ 14 февраля 2019

Добавить button type='button'

function Save(url) {
  console.log(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;
}
<a class="button" type="application/octet-stream" href="http://localhost:5300/File" download>Click here for dld</a>



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