2013-07-24 12 views
8

zu entfernen Ich kann das Symbol # in IE9 nicht entfernen. Ich suchte nach einer Antwort, fand aber keine Lösung.AngularJS Wie # # in IE9 durch Verwendung der Route

Diese Umleitungen immer

http://myhost.com:8080/#/website/ 

und zeigt diese Beschreibung:

The requested resource is not available. 

locationprovider.html5mode(true) nicht funktioniert. Die gleiche Route ist in FireFox zu arbeiten und zeigt

http://myhost.com:8080/website/ 

Wie kann ich das beheben?

+0

Hallo funktioniert, haben Sie dieses Problem beheben? Ich habe genau das gleiche Problem. –

+0

@TheLastBlackCat auch auf der Suche nach einer Lösung für diese. –

Antwort

6

IE9 nicht html5 Geschichte api Unterstützung haben, das ist, warum es # an die URL angehängt wird, # Entfernen wird Ihr Problem

+0

danke für die antwort. Wie kann ich dieses Problem lösen? Einfügen von/#/in/path/in wenn nicht funktioniert auch ... :( –

+1

@TheLastBlackCat Ich würde nur # an Ihrer Stelle verwenden. Schalten Sie HTML5-Modus :) – karaxuna

6

$location Documentation

Siehe "Hashbang und HTML5-Modi"

Grundsätzlich nicht lösen Der HTML5-Modus verwendet History API, wenn der Browser dies unterstützt, und fällt zurück auf Hashbang(), wenn dies nicht unterstützt wird.

Sie können nicht einfach "#" in einem Browser ohne History-API entfernen. Denn wenn Sie die URL ändern, würde der Browser versuchen, ein Neuladen zu erzwingen und den Fluss zu unterbrechen.

0

Mit window.location.hash = '/' löste mein Problem.

if (window.history && window.history.pushState) { 
 
    $locationProvider.html5Mode(true); 
 
} 
 
else { 
 
     window.location.hash = '/' // IE 9 FIX    
 
     $locationProvider.html5Mode(true); 
 
}

+0

In der Tat, Winkel kann es richtig behandeln, wenn Der Browser unterstützt die hte History-API nicht. "Wenn die HTML5-Verlaufs-API nicht von einem Browser unterstützt wird, greift der $ location-Dienst automatisch auf die Hashbang-URLs zurück." [$ location api] (https://docs.angularjs.org/guide/$location) – Qianyue

1

In der Tat wir nicht entfernen können, aber wir können es problemlos dort

RouterModule.forRoot(ROUTES, { useHash: Boolean(history.pushState) === false });