使用a标签或者iframe下载文件时出现2s延迟且下载了多个文件的问题解决方案,setTimeout(“location.replace(location.href.split(\“#\“)[0])“

问题出现场景:

在做项目的过程中碰到下载文件场景,本来这是一个很简单的流程,可是出现了点击一次按钮下载了两个文件的情况,一开始使用a标签的时候还进行页面跳转(应该是触发了默认行为)。最后选择了使用iframe标签下载文件,这样虽然解决了点击跳转的问题,但是还是偶尔会下载两个文件。

通过查看接口调用可以看到调用了三次下载接口,且多了一个flash.js文件在这里插入图片描述
通过查看这个flash.js文件可以看到

var url = "";
function setURL(ip){url = "http://"+ip+":89/cookie/flashcookie.html";}
function loadPage(){location.replace(location.href.split("#")[0]);}

add by yxf@2014/08/27
function IsCanReport2Ac(){
	
	var strUseAgent = navigator.userAgent.toLowerCase();
	
	//·Çwindows nt
	var isWinNt = strUseAgent.indexOf("windows nt") > -1;
	if (!isWinNt){	return false;}
	
	//Òƶ¯ÖÕ¶Ë
	var isMobile = strUseAgent.indexOf("mobile") > -1;
	if (isMobile){	return false;}
	
	//ΪAndroid
	var isAndroid = strUseAgent.indexOf("android") > -1;
	if (isAndroid){	return false;}
	
	//Ϊios
	var isIOS = !!strUseAgent.match(/\(i[^;]+;( u;)? cpu.+mac os x/);
	if (isIOS){	return false;}
	
	//ΪSymbian
	var isSymbian = strUseAgent.indexOf("symbian") > -1;
	if (isSymbian){	return false;}

	//ΪiPhone
	var isIPhone = strUseAgent.indexOf("iphone") > -1;
	if (isIPhone){	return false;}
	
	//Ϊipad
	var isIPad = strUseAgent.indexOf("ipad") > -1;
	if (isIPad){ return false;}
	
	//Ϊipod
	var isIPod = strUseAgent.indexOf("ipod") > -1;
	if (isIPod){ return false;}
	
	//ÅųýһЩÎóÅеÄapp ÌØÕ÷×Ö·û´®
	var isInvalidAppPos = strUseAgent.search(/ baidubrowser\/\d/);//-- °Ù¶ÈһϿͻ§¶Ë
	if (-1 != isInvalidAppPos){ return false;}
	
	return true;
}

这个文件获取了当前浏览器的User-Agent,通过判断User-Agent对该请求控制。

解决方案一

因为这不是代码引起 的问题,所以修改代码是解决不了问题的,既然是通过浏览器的User-Agent判断,就手动修改浏览器的User-Agent即可
在这里插入图片描述
取消勾选,选择mac浏览器即可。

解决方案二

http地址改为https地址。

解决方案三

更换网络,因为是网络被劫持,所以更换其他没被劫持的网络即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值