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 です。history.js の History オブジェクトではなく、window.history を使用しています。

使用する必要がありますgetState()

var historyState = History.getState();

また、履歴を参照している場合はいつでも履歴を使用する必要があります。History.js の readme を読んでください。

于 2012-11-08T23:57:49.397 に答える