1

簡単に説明すると、現在、私のページのすべてのリンクは次の形式を使用しています。

<a href="javascript:;" onclick="loadPageWithAjax();">Link</a>

私がやりたいのは、コードを次のようなものにアップグレードすることです。

<a href="actual/path/to/content" onclick="loadPageWithAjax();">Link</a>

私の目標は 2 つあります。

  1. リンク先の URL をステータス バーに表示する
  2. ユーザーがリンクの場所をコピーして有効な URL にすることを許可する

私の問題は、これが onclick を無視し、実際に URL にリダイレクトすることです。これを修正する最良の方法は何ですか?

4

3 に答える 3

1

jQueryを使用している場合は、History.jsまたはjQueryBBQを使用することをお勧めします。どちらも、HTML4ブラウザのフォールバックを備えたHTML5pushStateの優れたサポートを提供します。pushStateを使用すると、URLを更新して(ブックマーク可能にするため)、statechangeイベントを使用してナビゲーションを処理できます(ユーザーが戻るボタンを押したときなど)。History.jsのドキュメントを見て、それがどのように機能するかの例を確認してください。

アップデート:

あなたのコメントによると、AJAXリクエストを介して処理したいリンクのイベントハンドラーを作成することをお勧めします。

たとえば、ajaxyにしたいすべてのリンクに「ajaxify」クラスがあるとします。

$(document).on("click", "a.ajaxify", function(e) {
    var url = $(this).attr("href");
    History.pushState({}, null, url);

    // do something, like make an ajax request to get the url

    e.preventDefault();
});
于 2012-04-30T05:55:15.890 に答える
0

loadPageWithAjax()関数では、ブラウザによって自動的に呼び出されるイベント データを取得できる必要があります。

function loadPageWithAjax(e){
    e.preventDefault(); stops page from clicking
    //do your ajax stuff
}
于 2012-04-30T05:17:11.957 に答える
0

window.location.hash を使用してハッシュを使用するか、history.pushStateHTML5 ブラウザーでのみ使用できる新しい を使用しない限り、ページの読み込みを変更せずにアドレス バーの URL を設定することはできません。

于 2012-04-30T05:49:50.873 に答える