1

どのトピックを探しているのかわかりませんが、達成しようとしていることの説明は次のとおりです。

  • URL が変更された場合、その URL のページを読み込もうとする代わりに、javascript メソッドを呼び出す必要があります。

これを行う理由は、SEO の目的で、セグメント化された URL を使用する必要があるためです。ただし、プリロードされた HTML テンプレートを使用して、オンザフライで「新しいページ」を作成しようとしています。したがって、新しいページをロードする代わりに、テンプレートを使用してページをレンダリングする関連メソッドを呼び出したいだけです。

この動作は可能ですか?

注: 既存のシステムは現在 URL ハッシュを使用して、新しいページが読み込まれるかどうかを検出することに言及する価値があると思います。

よろしく、

エルウィン

4

2 に答える 2

0

デフォルトのアクションを防止してリダイレクトを行うすべてのリンクに、クリック ハンドラーを追加する必要があります。jQuery を使用すると、次のように簡単に実行できます。

$(document).ready(function () {
  $('a').on('click', function () {
    $(location).attr('href','your_url'); // redirect wherever you want to go
    return false;
  });    
});
于 2013-03-06T09:20:48.993 に答える
0

私は最近似たようなことをしました。
あなたが求めていることを理解していると仮定すると、ハッシュ変更時に関数を実行するリスナーは次のとおりです

var last_hash = "";

setInterval(function(){
    hash = window.location.hash;

    if(last_hash != hash && hash.length != 1){
        hash = hash.substring(1)

        //Making sure that there's actually a function with that name
        if(typeof window[hash] == 'function'){
            var fn = window[hash];

            //Execute the function
            fn.apply({param: "param1"}, ["param1", "param2"]);
        }
        last_hash = window.location.hash;
    }
}, 250);

関数名とパラメーターを分離し、すべてのパラメーターを配列に追加して に渡すことにより、ハッシュの追加の解析を行うことができますが、.applyその部分はあなたに任せます。

ハッシュではなく実際の URL を使用している場合は、ページ上のリンクのデフォルトの動作と、その後に読み込まれるリンクを防止するようにしてください。

function attach_disablelinks(){
    $("a").on("click", function(e){
        e.preventDefault();
    });
}
于 2013-03-06T09:46:33.707 に答える