gpt4 book ai didi

ember.js - Html4 浏览器不支持来自 HTML5 的 History API 的 history.pushState 和 history.replaceState 方法

转载 作者:行者123 更新时间:2023-12-04 22:33:01 39 4
gpt4 key购买 nike

我正在开发一个 ember 应用程序(使用 ember-1.0.pre.js)。我正在尝试在 IE8 上提供跨浏览器兼容性。

问题在于每次转换后都会生成 url,这对用户来说似乎不正确/错误。假设我点击了像 the_ domain_name/sell/new 这样的 url,它最初让我进入了我们应用程序的销售页面。然后我尝试转换一个名为“购买”的新状态,这将使我进入我们应用程序的购买页面。新的状态转换在 IE8 地址栏中生成一个 URL the_ domain_name/sell/new#/offers/purchase?&suid=1365149991779013736531657156165 而不是 the domain_name/offers/purchase

注意:the_domain_name = http://www.example.com
生成的 url 包含两个不正确的东西,

  • 初始前缀“/sell/new#”。
  • url 查询字符串中的参数“?&_suid=1365149991779013736531657156165”。

  • 我试图找出问题,发现 HTML4 浏览器不支持来自 HTML5 的 History API 的 pushState 和 replaceState 方法。我如何提供对 IE8 的支持 任何人都可以帮助我吗?

    最佳答案

    我建议 History.js 作为不支持 History API 的浏览器的 polyfill:https://github.com/browserstate/history.js

    它在:

    HTML5 浏览器:

  • Firefox 4+
  • Chrome 8+
  • 歌剧 11.5
  • Safari 5.0+
  • Safari iOS 4.3+

  • HTML4 浏览器:
  • IE 6, 7, 8, 9
  • Firefox 3
  • 歌剧 10, 11.0
  • Safari 4
  • Safari iOS 4.2、4.1、4.0、3.2

  • 添加 jquery.history.js 并将 history.js 位置处理程序注册到 Ember 应用程序中。

    这是我从原始 Ember.HistoryLocation ( Full code ) 修改的部分
    (function() {
    var get = Ember.get, set = Ember.set;
    var popstateFired = false;
    Ember.HistoryJsLocation = Ember.Object.extend({
    initState: function() {
    this.replaceState(this.formatURL(this.getURL()));
    set(this, 'history', window.History);
    },
    getState: function() {
    return get(this, 'history').getState().state;
    },
    pushState: function(path) {
    History.pushState({ path: path }, null, path);
    },
    replaceState: function(path) {
    History.replaceState({ path: path }, null, path);
    }
    });
    Ember.Location.registerImplementation('historyJs', Ember.HistoryJsLocation);
    })();

    然后在你的应用中使用这个 polyfill:
    App.Router.reopen({
    location: 'historyJs'
    });

    关于ember.js - Html4 浏览器不支持来自 HTML5 的 History API 的 history.pushState 和 history.replaceState 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835397/

    39 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com