0

我正在使用history.js脚本来管理 HTML5 历史状态更改。我的代码在最新版本的 Chrome 和 Firefox 中运行良好,但无法在 IE9 中运行。我已经尝试了 github 站点上提供的 history.js 和 history.iegte8.min.js 脚本。

我选择这个脚本的原因是因为它遵循与正确的 HTML5 API 相同的语法,这意味着当用户最终进入 IE10 时所做的更改最少。

这是代码。

    <!-- Placed at the end of the document so the pages load faster -->
<script src="js/jquery-1.8.2.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="js/history.iegte8.min.js"></script>

<script type="text/javascript">

    $(function() {

        $(window).bind('popstate', function( e ) {

            var historyState = history.state;
            if ( historyState ) {
                loadContent(historyState.link)
            } else {
                // Open Business Unit Reporting folder
                $('#item-2').prop('checked',true);
            }
        });         

        $('li a').click(function(e) {
            var latestLink = '<li>' + getLabelHierarchy(this) + '<a href="'+$(this).attr('href')+'">'+$(this).html()+'</a></li>';
            var historyList = latestLink + $('#historyList').html();
            history.replaceState({link: historyList}, null, null);              
        });

        $(window).trigger( "popstate" );

    });

    function getLabelHierarchy(node) {
                << code omitted >>
    }

    function loadContent(links) {
        $('#historyList').append(links);
    }


</script>

有人在 IE9 中使用过这个脚本吗?
非常感谢任何帮助。

4

1 回答 1

0

当您使用 History js 时,它是大写 H,而不是小写 h 在处理历史时,您使用的是 window.history,而不是 history.js History 对象。

你需要使用getState()

var historyState = History.getState();

您还需要在引用它的其他任何地方使用历史记录。阅读 History.js 的自述文件。

于 2012-11-08T23:57:49.397 回答