點擊一個標簽,觸發多個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)
},
