AngularJs在IE10,11中的一个坑。

最近项目在做IE10,11的兼容性测试,发现$http的get方法只会下发一次请求,经过查询,才得知是因为IE强制缓存了get方法获取的数据。

解决方法一:判断是是否是ie,是ie则禁用缓存。如果不判断,在谷歌中会报错。

var explorer = window.navigator.userAgent ;
 //ie,如果为ie,则强制清除缓存。规避ie的get方法强行缓存的坑
if ((explorer.toLowerCase().indexOf("trident") > -1 && explorer.indexOf("rv") > -1)
|| explorer.indexOf("MSIE")>=1) {
    if (!$httpProvider.defaults.headers.get) {
        $httpProvider.defaults.headers.get = {};
    }

    // Answer edited to include suggestions from comments
    // because previous version of code introduced browser-related errors

    //disable IE ajax request caching
    $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';
    // extra
    $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
    $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
}

解决方法二:在每个请求后面拼接当前时间戳。

?timestamp='+new Date().getTime()

转载于:https://my.oschina.net/hengwangm/blog/760255

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值