2011-12-13 7 views
4

私は自分のウェブサイトページをシームレスに読み込もうとしています。下のリンクのページをクリックすると、私が何を話しているのかが分かります。シームレスページをAJAXで変更する

http://www.ultranoir.com/

http://www.itsmassive.com/

あなたはそれが情報および/#をロードしますリンクをクリックしたとき!/ URLに追加されます。私のページが同じようにロードされるように、この機能をどのように追加するのですか?どこでもチュートリアルはありますか?

+2

[pjax](http://pjax.heroku.com/)または[History.js](https://github.com/balupton/History.js/)をご覧ください。 –

答えて

7

これは、hashchangeというイベントです。ページをリロードせずに#!の後に値を変更してから、AJAXを使用して必要な情報を読み込むことができます。 HTML5をサポートする新しいブラウザを使用している場合は、History.pushStateを使用して同様の方法でURLバーを変更できます。

基本的に、リンクにイベントを追加し、URLを変更して(location.hashまたはpushStateを使用)、AJAX経由でデータを読み込むことができます。

Hereは、pushStateの場合、location.hashand here'sのいずれかのまともな例です。

良いクロスブラウザソリューションについては、History.jsをお勧めします。

History.jsを使用する場合は、ページにスクリプトを追加した後、JavaScriptを少し追加する必要があります。

$('a.hash').click(function(e){ // For all links with the class "hash" 
    e.preventDefault(); // Don't follow link 
    History.pushState(null, '', this.href); // Change the current URL (notice the capital "H" in "History") 
    $('#content').slideUp('slow', function(){ // Animate it sliding up 
     var $this = $(this); 
     $this.load(this.href, function(){ // Use AJAX to load the page (or do whatever) 
      $this.slideUp('slow'); // Slide back down 
     }); 
}); 
+0

history.jsはそれを見てから最良の選択肢のようです。私はhistory.jsの作者からこのhttps://gist.github.com/854622に出くわしましたが、実装方法についてちょっと混乱しました。私はスクリプトを含めましたが、これ以上必要なことがないかどうかはわかりません。 –

+0

@JoeBobby:スクリプトを追加した後、ページにJavaScriptを追加して 'History.js'を使用する必要があります。私は私の答えに例を追加します。 –

+0

私はこれを私の頭の中に置き、.hashをナビゲーションリンクに追加しましたが、動作しているかどうかはわかりません。どのように伝えることができますか? –

関連する問題