2

私は Google chrome を使用しており、Dive into HMTL 5 に記載されている検出手法の 1 つを使用して、History API のサポートをテストしました。しかし、次のコードは機能していないようです。誰かが私が見逃しているものを教えてもらえますか?

function demo()
 {
  alert("history changing");
if(window.history && history.pushState)
{
    alert("api supported");
}
else
    alert("api not supported");
for(i=0;i<20;i++)
{
    history.pushState(null,null,"\try.html");
}
}

URL「try.html」がブラウザの履歴に20回挿入されると予想されるforループは機能していないようです。「try.html」という名前のページからこの関数を呼び出しました。ページの読み込み時に関数「demo」が実行されます。ページ「try.html」には、通常のテキスト行が含まれているだけです。私がやりたいことは、ユーザーがページ「try.html」をロードした後、ブラウザーの戻るボタンをクリックしても、履歴には 20 のエントリが含まれている必要があるため、同じページにとどまることです。同じページ、つまり「try.html」ですが、そうではありません。なんで?

4

1 に答える 1

1

わたしにはできる。次の 2 つの問題が発生する可能性があります。

  1. file://URIから関数を実行しようとすると、セキュリティ エラーが発生します。Chrome はこれについて沈黙していますが、Firefox はエラーを報告します。ページを Web サーバーに置き、 経由でアクセスする必要がありますhttp://
  2. この文字列"\try.html"は、タブ文字の後に が続くことry.htmlを意味します。おそらく"/try.html".

これは、コードに基づいた実際の例です。

于 2012-04-09T10:54:09.110 に答える