今天遇到一个偏门的问题,前端使用<script>来跨域时,再IE9下总是发生多次请求问题
原有代码:
var sc='<script type="text/javascript" src="'+domain+'/getRedPacket.js?'+param+'"></script>'; $("body").append(sc);
一般正常情况下都这么写吧,可是这种写法在IE9下有个问题,会多次去请求这个js
看了浏览器发送的请求发现,请求地址后自动在参数里加了时间戳,这个在非IE9下是没问题的,但IE9会去请求两次,一次不带时间戳,一次带时间戳,这就有点尴尬了,万恶的IE
解决方案
var s=document.createElement('script'); s.type='text/javascript'; s.src=domain+'/getRedPacket.js?'+param; document.getElementsByTagName('body')[0].appendChild(s);
这种方式不会自动加时间戳,自然也不会重复发送了,如果需要避免浏览器缓存,需要自己在param中加入时间戳
param+="&_="+new Date().getTime();