4

sammy.js をいじり始めたばかりで、最初にやりたいことは、履歴の変更がどのように機能するかをテストすることです。そして、期待どおりに動作しますが、IE10 を開いて IE9 ブラウザ モードに切り替えると、すべてがうまくいきませんでした。ハッシュでリンクを設定していない場合、IE9 はリンクをたどり続けます。もちろん、IE8でも同じ問題があります。

現時点では、サミーに関連するこのコードしかありません

App.sm = $.sammy('#content', function() {

    this.get('/', function(context) {
        console.log('Yo yo yo')
    });

    this.get('/landing', function(context) {
        console.log('landing page')
    });

    this.get('/:user', function(context) {
        console.log(context)
    });

});

そしてイニシエーター

$(function() {
    App.sm.run('/');
});

また、通常のリンク、ハッシュ、通常のリンクの 3 種類のリンクを含むこの例も見ましたが、IE9 と IE8 で適切に動作しています。どういうわけか、sammy.js が html5 の履歴と html4 を同時にサポートするようにすることができるはずだと思います。

だから私の質問は、どうすればそれを達成できるのでしょうか?

アップデート

IEで動作させる方法を見つけました

このスニペットを追加しました:

this.bind('run', function(e) {
        var ctx = this;
        $('body').on('click', 'a', function(e) {
            e.preventDefault();
            ctx.redirect($(e.target).attr('href'));
            return false;
        });
    });

とにかく、私はまだウェブサイトへのエントリに問題があります.html5の履歴をサポートするブラウザは、最初のURLが何であれ、常にdomain.comにリダイレクトされます.

したがって、sammy.js を適切に動作させるにはどのように構成すればよいのでしょうか。または、knockout.js でうまく動作する他のルーターを誰かが推奨できるかもしれません。

4

1 に答える 1