加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angularjs历史支持IE6和IE7

发布时间:2020-12-17 17:45:00 所属栏目:安全 来源:网络整理
导读:我在 Angularjs中为我的SPA使用路由,但我必须支持IE7(和IE7在IE7兼容模式下).我希望浏览器历史记录仍然可用.我不在乎是否必须使用jQuery插件. 解决方法 我检查了角度源sniffer.js,location.js和browser.js,以检查历史记录的工作原理.本质上,如果浏览器支持历
我在 Angularjs中为我的SPA使用路由,但我必须支持IE7(和IE7在IE7兼容模式下).我希望浏览器历史记录仍然可用.我不在乎是否必须使用jQuery插件.

解决方法

我检查了角度源sniffer.js,location.js和browser.js,以检查历史记录的工作原理.本质上,如果浏览器支持历史记录(即$sniffer.history为true),则使用历史api,否则它只是写入location.href(或locaiton.replace(url)).有关详细信息,请在browser.js第149行中查看$browser.url(url,replace).

因此,如果angular只是写入位置,那么像Ben Alman的BBQ这样的jquery插件会选择此事件,因为它正在轮询更改location.hash.通过简单地包括Ben的hashchange plugin(BBQ的一个子集)然后进行最小的事件火灾和事件监听,我已经成功地在IE8(IE7模式)中工作了:

$(function () {
  $(window).hashchange(function() {
    // don't delete this empty handler or ie6/7 history won't work.
  });
  // call hashchange on first load
  $(window).hashchange();
});

注意:jQuery hashchange(和BBQ)在第300行使用了弃用的$.browser.msie,所以改为使用(document.documentMode!= undefined),如Ben的博客文章评论中所建议的那样.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读