JS 下载 弹框被拦截解决方案

JS 下载 弹框被拦截解决方案

字数311  阅读0  评论0 

总结

  1. 早期下载的简单用法 : window.open(downloadUrl)
  2. 下载弹框会被拦截, 解决方案是使用 form 来实现
    //Jquery 版, 多次下载防止,添加多个 form if ($('#_downloadWin').length > 0) { $('#_downloadWin').attr('action', url); $('#_downloadWin input').val(path);} else { // 传参 则在 form 里面 添加 隐藏域(<input type="hidden"/>) $('body').append($(`<form id="_downloadWin" action="${url}" target="_blank" method="get"><input name="path" type="hidden" value="${path}" /></form>`)); } $('#_downloadWin').submit();
    //JavaScript版 var f = document.createElement("form"); document.body.appendChild(f); var i = document.createElement("input"); i.type = "hidden"; f.appendChild(i); i.value = "5"; i.name = "price"; f.action = "aa.asp"; //下载的url 地址 f.submit();

问题描述与解决方案

早期下载文件的时候,是直接使用 window.open(downloadUrl) 这种简单粗暴的方法来实现的.

但是到目前(2016.05.17), window.open 已经被大部分的主流浏览器给拦截了, 如下图, 需要人工在点击一次允许打开链接. 这样大大的降低了 友好的交互.


Paste_Image.png

于是需要寻找新的解决方案, 就使用 form 表单元素来进行下载, 注意 Form 表单的 target 要设置为 _blank* 在新的窗口打开,这样就不会影响本页面

转载于:https://www.cnblogs.com/zhongxia/p/5500974.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值