點擊一個標簽,觸發多個a標簽的下載事件,會出現只有一個文件下載,其他都被攔截,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script> </head> <body> <button id='download'>下載</button> <!-- <input type="text" name='filePath'> --> </body> <script> // window.onload = function(){ $(function(){ $("#download").click( function(){//點擊下載按鈕 alert('下載') let triggerDelay = 100; let removeDelay = 1000; let url_arr=['http://download.huduntech.com/software/smartpdf/installer/xunjiepdfreader.exe','http://download.huduntech.com/software/smartpdf/installer/xunjiepdfreader.exe','http://download.huduntech.com/software/smartpdf/installer/xunjiepdfreader.exe','http://download.huduntech.com/software/smartpdf/installer/xunjiepdfreader.exe']; //多個file文件選擇checkbox // $('input[name="filePath"]:checked').each(function(){ // url_arr.push($(this).val());//取到下載url // }); url_arr.forEach(function(item,index){ _createIFrame(item, index * triggerDelay, removeDelay); console.log('index', index) }) function _createIFrame(url, triggerDelay, removeDelay) { //動態添加iframe,設置src,然后刪除 setTimeout(function() { var frame = $('<iframe style="display: none;" class="multi-download"></iframe>'); frame.attr('src', url); $(document.body).after(frame); setTimeout(function() { frame.remove(); }, removeDelay); }, triggerDelay); } }) }) // } </script> </html>
react中用原生的js去寫 這是基於antd的react openDown () { const triggerDelay = 100; const removeDelay = 1000; const {createIFrame}= this this.state.selectedRows.forEach((item, index)=>{ createIFrame(item.fileUrl, index * triggerDelay, removeDelay) }) }, createIFrame (url, triggerDelay, removeDelay) { setTimeout(function (){ // 動態添加iframe,設置src,然后刪除 const frame = document.createElement('iframe') //創建a對象 frame.setAttribute('style', 'display: none') frame.setAttribute('src', url) frame.setAttribute('id', 'iframeName') document.body.appendChild(frame) setTimeout(function(){ const node = document.getElementById('iframeName') node.parentNode.removeChild(node) }, removeDelay) }, triggerDelay) },