点击一个标签,触发多个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)
},