一个按钮触发多个a标签,只有一个可以下载,其他的window.open()被浏览器拦截...

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

  

  

转载于:https://www.cnblogs.com/summerXll/p/9052681.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值