2015-09-04 6 views
7

Ich verwende window.history.replaceState(), um die Abfragezeichenfolge einer HTML-Datei zu ändern, auf die mit file: /// C:/...Verlauf replaceState funktioniert nicht mehr in Chrome für lokale Datei

zugegriffen wurde

Dies funktioniert in Chrome, Internet Explorer und FireFox, funktioniert aber nicht mehr in Chrome. Nicht sicher, wann es aufgehört hat zu arbeiten. Ich habe Chrome 45.0.2454.85. Es funktioniert immer noch in den anderen 2 Browsern.

Ich erhalte:

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'.

Sorry, aber das funktioniert nicht in jeder gehosteten Geige. Sie können den Code auf eine lokale HTML-Datei kopieren Sie es für sich selbst zu sehen:

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

Offensichtlich ich diese auf einem Server hosten könnte aber versuchte, einfach zu halten. Dies ist ein einfaches Scrum-Board, das von Git gehostet wird. Es trifft einen Webservice eines Drittanbieters, um die Daten zu erhalten. Irgendwelche Ideen zum Umgehen des Fehlers.

+0

welche Version, denn für mich funktioniert das –

+1

Chrome 45.0.2454.85 funktioniert nicht für mich. – Mike

+0

Das ist durcheinander. Ich skizziere alle meine Apps als lokale HTML-Dateien in Chrome. Leider funktioniert dies nicht mehr, da jQuery Mobile 'replaceState()' benötigt. –

Antwort

3

Ich hatte das gleiche Problem. Als Workaround habe ich Chrome mit dem Flag --allow-file-access-from-files gestartet.

Aber denken Sie, das ist nicht die beste Lösung.

Unten ist ein Beispiel dafür, wie ich laufen:

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

Wenn jemand eine bessere Lösung findet, lass es uns wissen.

+0

Wie läuft es unter Windows? Start => Ausführen => "C: \ Programme (x86) \ Google \ Chrome \ Anwendung \ chrome.exe" --app = file: /// C: /Users/Test/Desktop/test.html --allow -file-access-from-files gibt mir nicht gefunden. –

Verwandte Themen