3

我一直在我的 HTML5 浏览器和 IE8/9 上成功使用 History.js,但是即使我使用的是 html4+html5 jQuery 版本,它在 ie6/ie7 中也不起作用。

使用以下代码,当我从主页单击普通链接时,我希望 state.data 能够恢复,然后单击后退按钮返回主页。

主页包含以下代码,通过提交表单调用:

if (window.History && window.History.enabled) {
  var vars = {};
  var tables = {};
  vars['something'] = 'value';
  History.replaceState({vars: vars, tables: tables}, null, window.location.href.match(/^([^#]*)/)[1]);
}

此页面有一个 onload 函数,如下所示:

var state = History.getState();
var data = state.data;

    if (data.vars) {
          alert('success!');
    }

它在 IE6/IE7 下没有显示成功,尽管它在我尝试过的任何其他浏览器上都可以正常工作。

您是否看到任何明显缺失的内容,或者对如何进行有想法?我尝试调试 history.html4.js 和 history.js 的非缩小版本,但我不了解交互的微妙之处。

谢谢你尽你所能的帮助。

4

1 回答 1

0

我相信您永远不会让 History.js 与不支持该onHashChange事件的浏览器一起使用,因为 History.js 使用pushState(仅在 html5 中)兼容浏览器,而“#hash”则用于支持该事件的 html4 浏览器。甚至 ie9 也使用 hash 而不是 pushState。但是,同样,ie6 和 ie7 都不支持散列事件。

于 2013-03-14T14:21:00.227 回答