3

ホームページがあり、ブログやギャラリーなどの他のページに移動したいのですが、アドレスバーの URL を変更する必要はありません。サーバー側でそれが可能であることは知っていますが、Javascript で行うにはどうすればよいですか?

ここに私のHTML/JSコードがあります:

//HTML
<ul>
  <li><a onclick="openPage('contact.html')">Contact Us</a></li>
  <li><a onclick="openPage('blog.html')">Blog</a></li>
  <li><a onclick="openPage('gallery.html')">Gallery</a></li>
</ul>

//Javascript
function openPage(url){
     //   All these will forward but will change the URL
     //window.open(url);
     //window.location.href=url;
     //self.location=url;
     //window.location.replace(url);
}

最初に、URLはhttp://something.com/mainpage.html

また、どのページに移動しても同じままである必要があります。

これは私が持っているものの非常に簡単な例です。では、サーバーなしでクライアント側で可能ですか? そうでない場合、サーバー側でそれを行う最も簡単な方法は何ですか? Java/JSF を使用していると仮定します。

4

2 に答える 2

2

#ページのリロードを防ぎたい場合は、ハッシュを追加する必要があります。

css-tricks.com には、それに関する優れたスクリーンキャストがあります。

動的コンテンツのベスト プラクティス

stackoverflow でこの質問を確認してください。

于 2012-11-01T07:23:52.873 に答える
0

ヒントをお伝えします。その後、自分でコードを記述できます。

ajax を使用して、開きたいページ全体を取得します。(私はそれらが同じサーバー上にあると仮定します。)

次に、html.responsetext を解析し、取得したページの body.innerHTML を見つけます。
次に、document.body.innerHTML=fetched_body_innerHTML; を使用します。
document.title も同様に変更します。

両方のページに同じ CSS があり (外観の一貫性のため)、おそらく同じ js ファイルが読み込まれると想定しています。

2 つのページに異なる CSS および/または js ファイルのセットがある場合は、追加のノードを作成し、古いスクリプト/リンク ノードを削除する必要があります。(ただし、古い JS が既に読み込まれているため、ボディの innerHTML を変更した後に body.onload がトリガーされないため、結果は同じではありません。

于 2012-11-01T07:36:31.500 に答える