2015-09-04 12 views
7

sto usando window.history.replaceState() per modificare la stringa di query di un file HTML che si accede tramite file: /// C:/...Storia replaceState non funziona più in Chrome per file locale

Questo funzionava su Chrome, Internet Explorer e FireFox, ma non funziona più su Chrome. Non sono sicuro quando ha smesso di funzionare. Ho Chrome 45.0.2454.85. Funziona ancora negli altri 2 browser.

sto ottenendo:

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

Ci dispiace, ma questo non funziona in alcun violino ospitato. È possibile copiare il codice in un file HTML locale per vedere di persona:

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

Ovviamente ho potuto ospitare questo su un server, ma stava cercando di mantenere semplice. Questa è una semplice lavagna che stiamo usando ospitata da Git. Colpisce un servizio web di terzi per ottenere i dati. Qualche idea su come aggirare l'errore.

+0

quale versione, perché per me questo funziona –

+1

Chrome 45.0.2454.85 non funziona per me. – Mike

+0

Questo è incasinato. Schizzo tutte le mie app come file HTML locali in Chrome. Triste per vedere questo non funziona più a causa di jQuery Mobile che richiede 'replaceState()'. –

risposta

3

Ho avuto lo stesso problema. Come soluzione alternativa, ho avviato Chrome con il flag --allow-file-access-from-files.

Ma pensate che questa non sia la soluzione migliore.

Di seguito è un esempio di come sto correndo:

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

Se qualcuno trova una soluzione migliore, fatecelo sapere.

+0

Come lo si esegue su Windows? Start => Esegui => "C: \ Programmi (x86) \ Google \ Chrome \ Application \ chrome.exe" --app = file: /// C: /Users/Test/Desktop/test.html --allow -file-access-from-files non mi ha trovato. –

Problemi correlati