5

Angularjsで私のSPAに使用していますが、IE7(IE7互換モードではIE8)をサポートする必要があります。私はブラウザの履歴がまだ動作するようにしたい。 jQueryプラグインを使用する必要があるかどうかは気にしません。IE6とIE7のAngularjs履歴サポート

+6

90年代と呼ばれます。彼らは彼らのhrefを元気にしたい。 –

+0

@DanKanze - 悲しいことに私が働いているところでは、内部システムがIE7に浸っているので、互換モードでIE8以上にアップグレードすることはできません。 –

+0

はい、可能です。彼らは、従来のアプリケーションのためにIE 7/8を使用することができ、他のすべてのためにChromeまたはFirefoxを使用することができます。 MicrosoftのKool-Aidを飲んでいない限り。このような従来のアプリは、IEを使用する唯一の理由です。これまで – iconoclast

答えて

7

私は歴史が働いているかの仕組みを確認するために、角源を通じてsniffer.jslocation.jsbrowser.jsをチェックします。基本的にブラウザが履歴をサポートしている場合(つまり$sniffer.historyがtrueの場合)、履歴apiが使用されます。それ以外の場合は、単にlocation.href(またはlocaiton.replace(url))に書き込まれます。詳細は$browser.url(url, replace)browser.js、149行をご覧ください。ただlocationに書き込みを行っている角度ならば、それは変更がlocation.hashするためのポーリングがあるので

だから、その後、jQueryプラグイン Ben AlmanBBQのように、このイベントをピックアップします。 jQueryのなhashchange(とBBQ)されています

$(function() { 
    $(window).hashchange(function() { 
    // don't delete this empty handler or ie6/7 history won't work. 
    }); 
    // call hashchange on first load 
    $(window).hashchange(); 
}); 

注:私は正常に単にベンのhashchange plugin、その後(BBQのサブセット)と最小限のイベント火災やイベントリスニングを含むことにより、IE8(IE7モード)で、この作業を持っています$.browser.msie行300に置き換えて、代わりに(document.documentMode != undefined)をコメントのBenのブログ記事に示すように使用してください。