2015-09-04 2 views
7

Używam window.history.replaceState() do zmiany ciągu zapytania pliku HTML, do którego dostęp uzyskano przy użyciu pliku: /// C:/...Historia replaceState nie działa już w Chrome dla lokalnego pliku

To działało w Chrome, Internet Explorer i FireFox, ale nie działa już w Chrome. Nie wiem, kiedy przestało działać. Mam Chrome 45.0.2454.85. Nadal działa w pozostałych 2 przeglądarkach.

Dostaję:

Uncaught SecurityError: Failed to execute 'replaceState' on 'History': A history state object with URL 'file:///C:/Users/Michael/Desktop/test.html?Q=NewQueryString' cannot be created in a document with origin 'null'.

Niestety, ale to nie działa w dowolnej obsługiwanej skrzypcach. Możesz skopiować kod do lokalnego pliku HTML, aby zobaczyć na własne oczy:

<html> 
<body> 
<button onclick="clickme()">Click me</button> 
<script> 
function clickme() { 
    window.history.replaceState({ "html": undefined, "pageTitle": "NewTitle"}, "", "?Q=NewQueryString"); 
} 
</script> 
</body> 
</html> 

Oczywiście mógłbym zorganizować to na serwerze, ale starał się zachować proste. To jest prosta tablica do gry na scrum, którą używamy hostowaną przez Gita. Uderza w usługę WWW innej firmy, aby uzyskać dane. Wszelkie pomysły dotyczące obejścia błędu.

+0

jaka wersja, ponieważ dla mnie to działa –

+1

Chrome 45.0.2454.85 nie działa dla mnie. – Mike

+0

To jest pomieszane. Szkicuję wszystkie moje aplikacje jako lokalne pliki HTML w Chrome. Smutne, że to już nie działa z powodu jQuery Mobile wymagającego 'replaceState()'. –

Odpowiedz

3

Miałem ten sam problem. Aby obejść ten problem, uruchomiłem Chrome z flagą "allow-file-access-from-files ".

Ale myślę, że to nie jest najlepsze rozwiązanie.

Poniżej jest przykład jak biegnę:

"C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe" --app = file: /// C: /APP/index.html - plik -allow-access-from-files

Jeśli ktoś znajdzie lepsze rozwiązanie, daj nam znać.

+0

Jak uruchomić go w systemie Windows? Start => Uruchom => "C: \ Program Files (x86) \ Google \ Chrome \ Aplikacja \ chrome.exe" --app = file: /// C: /Users/Test/Desktop/test.html --allow -file-access-from-files daje mi nie znaleziono. –