history.js状态不在IE9中工作

时间:2012-11-08 23:21:51

标签: jquery html5 internet-explorer-9 history.js

我正在使用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中使用过这个脚本吗? 任何帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

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

您需要使用getState()

var historyState = History.getState();

您还需要使用历史记录,无论您正在引用它。阅读History.js的自述文件。