0

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

これは私が持っているものです

$(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()

});

< 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>

fooをクリックすると、コンテンツは正常に読み込まれますが、www.foo.com /#!fooを使用してサイトを呼び出すと、コンテンツが読み込まれません。

誰かが私を導くことができますか?

4

1 に答える 1

0

エラー コンソールを見ると、次の例外がスローされていることがわかります。

キャッチされないエラー: 構文エラー、認識されない式: [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 部分を一重引用符で囲んでいることに注意してください。

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

質問の更新:関連するメモでは、href="#!foo"href が実際にhref="foo.php". ユーザーが JavaScript を有効にしていない場合は、foo.php にアクセスしてページを表示できます。ユーザーが JavaScript を使用している場合は、ハッシュバンを URL に配置し、前に行ったことを行います。これは手動で行うことができます。ただし、 jQuery BBQなどのライブラリを使用すると、これを簡単に行うことができます。

于 2012-04-27T14:12:08.933 に答える