2012-04-27 6 views
0

私は#を#に変更することで自分のサイトをクロール可能にしようとしています!リンクをクリックするとページが正常に機能しますが、URLから直接ハッシュを呼び出すスクリプトを修正することはできません。ハッシュを#でクロール可能にする!変更を生き残るために

これは私が

HEAD

私は、FOOで[OK]を、私はwww.fooで、私のサイトを呼び出す場合は、コンテンツのロードをクリックし
$(function() { 
    $("#tabs a").click(function() { 

     var page = this.hash.substr(2); 

     $.get(page+".php", function(gotHtml) { 
      $("#content").html(gotHtml) 
     }); 
    }); 

    (location.hash) ? $("a[href="+location.hash+"]").click() : $("#tabs a:first").click() 

}); 

BODY

< ul id="tabs"> 

< li>< a href="#!foo" >foo</a>< /li> 

< li>< a href="#!foo2" >foo2</a>< /li> 

< li>< a href="#!foo3" >foo3</a>< /li> 

< /ul> 

持っているものです。 com /#!foo、コンテンツをロードしません。

誰でも私を案内できますか?あなたはエラーコンソールに見れば

+0

FYI - これはハッシュバーンと呼ばれています。 – scottheckel

答えて

0

あなたはそれが次の例外を投げていることがわかります。この問題を解決するために

Uncaught Error: Syntax error, unrecognized expression: [href=#!foo2]

は、あなたがほんの少しあなたのJavaScriptを変更することができます。

$(function() { 
    $("#tabs a").click(function() { 

     var page = this.hash.substr(2); 

     $.get(page+".php", function(gotHtml) { 
      $("#content").html(gotHtml) 
     }); 
    }); 

    (location.hash) ? $("a[href='"+location.hash+"']").click() : $("#tabs a:first").click() 

}); 

通知セレクタのhref部分を一重引用符で囲みました。

関連するノートでは、あなたがしようとしている実際のURL値であるhref属性をハッシュバング(頭痛です)にすることをお勧めします。 JavaScriptでは、ハッシュ・バンに切り替わります。これは、JavaScriptを無効にしているユーザーがサイトを使用できなくなるためです。あなたのクリック機能は少し変更され、ハッシュを設定し、ページをロードし、デフォルトのクリック動作を無効にします。質問の

アップデート:関連ノートで、私は実際にhref="foo.php"するhref="#!foo"てhref変更した場合を意味しました。ユーザーがJavaScriptを有効にしていない場合、foo.phpにアクセスしてページを見ることができます。ユーザーがJavaScriptを持っている場合は、URLにhashbangを置き、以前に行ったことをします。これは手動で行うことができます。しかし、jQuery BBQのようなライブラリは、これを簡単にすることができます。

+0

お返事ありがとうございました!それは今完璧に動作します! 「href属性を実際のURL値にする」と言ったら詳しいことを教えてください。私はそれを得ていない...おそらく例? すみません、私は全然ノブですよ、わかっています! もう一度ありがとうございます! – jazzymany

+0

確かに、ちょっと凝った。 – scottheckel

関連する問題