2015-09-04 8 views
7

file:/// C:/ ...を使用してアクセスされたHTMLファイルのクエリ文字列を変更するには、window.history.replaceState()を使用しています。履歴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によってホストされているシンプルなスクラムボードです。データを取得するためにサードパーティのWebサービスにヒットします。エラーを回避するためのアイデア。

+0

私のために働いているので –

+1

Chrome 45.0.2454.85は私のために働いていません。 – Mike

+0

これはうんざりです。私はすべての自分のアプリケーションをChromeのローカルHTMLファイルとして描いています。これは、 'replaceState()'を必要とするjQuery Mobileのためにもう動作しません。 –

答えて

3

私は同じ問題を抱えていました。回避策として、--allow-file-from-filesフラグを付けてChromeを起動しました。

しかし、これが最善の解決策ではないと思います。以下は

私が実行しているかの例です:

"C:\プログラムファイル(x86の)\ Googleの\クローム\アプリケーションの\ chrome.exe" --app =ファイル:/// C: /APP/index.html --allow-file-from-files

誰かがより良い解決策を見つけたら、私たちに知らせてください。

+0

Windowsでどのように実行しますか?スタート=>実行=> "C:¥Program Files(x86)¥Google¥Chrome¥Application¥chrome.exe" --app = file:/// C:/Users/Test/Desktop/test.html --allow -file-file-from-filesは私に見つかりません。 –

4

それは私がcode.google上の問題を満たしここクローム45 に動作を停止:あなただけの必要がある場合は--allow-ファイル・アクセスから、ファイルを設定 https://code.google.com/p/chromium/issues/detail?id=529313

は良い解決策ですあなた自身のコンピュータでそれを実行する。

関連する問題