2015-09-04 6 views
7

Я использую window.history.replaceState(), чтобы изменить строку запроса файла HTML, к которому был обращен доступ, используя файл: /// C:/...История replaceState больше не работает в Chrome для локального файла

Это работало в Chrome, Internet Explorer и FireFox, но больше не работает в Chrome. Не уверен, когда он перестает работать. У меня Chrome 45.0.2454.85. Он по-прежнему работает в других 2 браузерах.

Я получаю:

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

Извините, но это не работает в любой организованной скрипку. Вы можете скопировать код в локальный HTML-файл, чтобы увидеть его для себя:

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

Очевидно, что я мог бы провести это на сервере, но пытается сохранить простой. Это простая доска для справки, которую мы используем в Git. Он обращается к стороннему веб-сервису для получения данных. Любые идеи по работе с ошибкой.

+0

какой версия, т.к. для меня thats рабочий –

+1

Chrome 45.0.2454.85 не работает для меня. – Mike

+0

Это испорчено. Я начерпываю все свои приложения в виде локальных HTML-файлов в Chrome. Грустно видеть, что это больше не работает из-за jQuery Mobile, требующего 'replaceState()'. –

ответ

3

У меня была та же проблема. В качестве обходного пути я начал использовать Chrome с флажком --allow-file-access-from-files.

Но подумайте, что это не лучшее решение.

Ниже приведен пример того, как я бегу:

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

Если кто-то найдет лучшее решение, сообщите нам об этом.

+0

Как запустить его в Windows? Start => Run => "C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe" --app = файл: /// C: /Users/Test/Desktop/test.html --allow -file-access-from-files не дает мне. –

4

Он перестал работать на Chrome 45. Здесь я заполнила вопрос о code.google: https://code.google.com/p/chromium/issues/detail?id=529313

Установка --allow-файл-доступ-с-файлов является хорошим решением, если вам просто нужно для запуска его на вашем собственном компьютере.

Смежные вопросы