Как создать «загрузку» без клика?

У меня есть следующий код jQuery и HTML, и он отлично работает:

<a id="bmpFormat">.BMP</a>

<script>
    var exportBMPElement = document.getElementById('bmpFormat');

    exportBMPElement.addEventListener('click', function(e) {
      map.once('postcompose', function(event) {
        var canvas = event.context.canvas;
        exportBMPElement.download = 'mapa.bmp'
        exportBMPElement.href = canvas.toDataURL('image/bmp');
      });
    }
</script>

Но теперь я хотел бы вызвать все это без щелчка, просто вызвав функцию. Я пытался сделать это, но безуспешно... Я хочу сделать это таким образом, потому что мне нужно вызвать этот код после проверки формы. Кстати, моя форма находится в модальном div.

На самом деле, я пытался сделать этот простой пример, но он не работает:

<div class="modal>  
  <form id="exportMapForm" action="javascript:doExportMap()" role="form">
  </form>
</div>

function doExportMap() {
    var a = document.createElement('a');
    a.download = 'tux.png';
    a.href = 'http://mail.rsgc.on.ca/~ldevir/ICS3U/Chapter4/Images/tux.png';
    a.click();
}

Я понимаю, что мне нужно создать новый элемент здесь, чтобы получить цель.


person Javier Muñoz    schedule 05.03.2015    source источник


Ответы (3)


Добавление привязки к DOM, кажется, работает:

function doExportMap() {
    var a = document.createElement('a');
    a.download = 'tux.png';
    a.href = 'http://mail.rsgc.on.ca/~ldevir/ICS3U/Chapter4/Images/tux.png';
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
}
person Oriol    schedule 05.03.2015

Ваш элемент a еще не является частью DOM (объектной модели документа), поэтому a.click() мало что будет делать. В вашей функции doExportMap() сразу после бита a.click(); попробуйте следующее:

document.getElementById("exportMapForm").appendChild(a);

Теперь он является частью DOM и будет работать как положено. На данный момент он находится в вашей «exportMapForm», но вы можете добавить его куда угодно;)

person Community    schedule 05.03.2015

Дуд,

все, что вам нужно, это выполнить в js это

document.location = 'http://mail.rsgc.on.ca/~ldevir/ICS3U/Chapter4/Images/tux.png'
person Senad Meškin    schedule 06.03.2015