0

HTMLを新しいウィンドウに書き込む方法は知ってwindow.open()いますが、もちろん新しいウィンドウが表示されます。

HTML 出力文字列を現在のウィンドウに書き込みたいと思います。リンクをクリックするのと同じ効果があります。目的は、ブラウザの履歴があることを確認することです。

を使用して URL を参照するとwindow.location.href()、href 属性が URL でなければならないため、コンテンツを書き込むことができません。

2 つを組み合わせて、ファイルの代わりに HTML の文字列値を使用する新しいページをブラウザの履歴にロードする方法はありますか? サーバー側の関与は許可されていません。

4

1 に答える 1

2

HTML5には、JavaScript用の新しいHistoryAPIが含まれています。これにより、JSを使用してブラウザの履歴に物事をプッシュすることができます。これであなたはあなたが探していることを達成することができるかもしれません。これでうまくいかない場合は、質問を明確にしてください。何を求めているのかを判断するのが少し難しいためです。

編集:
これはあなたが探しているものだと思います。この例を見てください。「ふわふわ」などのリンクをクリックすると、サイトは実際にはサイトの本文のテキストを置き換え、ブラウザの履歴にエントリを追加して、ユーザーが実際に別のページに移動したように見せます。実際には、ブラウザが別のリクエストを行ったり、別のページを開いたりすることはありません。そのように表示するのは、JavaScriptのトリックです。

私があなたに送ったデモリンクの説明と、たくさんの良い情報: http:
//html5doctor.com/history-api/

jsFiddleでのデモンストレーション:

ここで話していることをjsFiddleで簡単にデモンストレーションしました。ご覧になると、リンクが表示されます。右クリックしてコンテンツを含む小さな正方形のソースを表示すると、ページ「 http://jsfiddle.net/ByZpW/4/ 」のソースが表示されていることがわかります。

リンクをクリックします。

これで、リンクに新しいコンテンツと新しいテキストが表示されます。その小さな正方形のソースをもう一度表示すると、ページ「 http://fiddle.jshell.net/lolnewpageonjsfiddledomain/ 」のソースを表示していることがわかります。

明らかに、jsFiddleではドメインに新しいページを追加できませんでした。ではどうなりましたか?私はjavascriptに、私はどこかに行って、それが私を信じていると言いました。ここで、コンテンツスクエアをクリックしてヒットbackspaceすると、「最初のページ」に戻ることがわかります。ソースを表示すると、元の場所に戻っていることを確認できます。もちろん、これはすべて大きな嘘です。私たちはどこにも行きませんでした、そしてすべてがJavaScriptでそのように見えるように作られました。

次の行に注意してください。

// History magic here
history.pushState({link: link, content: content}, "test", $(this).attr("href"));

そこで、JSを使用して、「まだここにいるのに、どこかに行ったふりをします」と言います。

于 2013-03-14T03:26:13.407 に答える