2009-06-08 20 views
4

hrefとonclickイベントの両方が指定されたアンカーリンクがあります。 onclickはlocation.hrefをserver urlに設定し、hrefを他のリンクに設定します。 リンクがクリックされると、hrefイベントは常に呼び出されますが、onclickイベントは1回だけ呼び出されます(これは1つのアンカーリンクに対してのみです)。私はjavascriptをデバッグすると、正しく動作し、hrefとonclick.Whatの両方が問題になることがありますか?アンカーリンクでHrefとonclickの問題が発生しました

+0

もっと詳しい情報が必要だと思います。 1つのアンカータグで2つのリクエストを送信しようとしているのはなぜですか? 「一度呼び出される」とはどういう意味ですか?1つのアンカータグに対してのみ、すべてまたは初めてではなく、ページが置き換えられた後ではありません。 – tvanfosson

+0

あなたの目標は完全に不明です。 onclickが1つの場所を設定し、href - 別の場所を設定すると言うと、実際にどの場所に移動したいのですか?あなたは彼が1ページで両方の場所に行くことができないことに気づきます。いくつかの答えに対するコメントをチェックすることで、1つの場所にユーザを持ち帰り、別の場所にリダイレクトしたいという気持ちが出ます。はいの場合は、サーバー側からリダイレクトを発行する必要があります。私。 href = "/ target.html"、onclick = "window.location = '/ action.call'"の場合は、hrefに "/action.call"を、サーバー側にはHTTPステータス302をリダイレクトする必要があります。また、 "投稿後リダイレクト"を参照してください! – mvmn

答えて

12

だけで説明するの

<a href="whatever.html" onclick='window.location.href="http://whereverelse";return false;'>linky</a> 

を試してみてください。この場合、返すfalseがデフォルトのアクションを防ぐことができます。

なぜこれをやりたいのですか?

+0

私はfalseを返すことがhref functioning.Butを停止すると思いますが、私は両方のwork.Onclickはhref.Butで指定されている適切なリンクにユーザーをリダイレクトしたい後にデータベースを更新するようなサーバー側の作業を行います問題。 私はサーバー側からユーザーをリダイレクトしようとしましたが、urlがmms://、notes://などの異なるプロトコルで開始すると失敗します。 –

+2

location.hrefは現在のページを変更するためのものです。あなたがAJAXリクエストをしたいと思うように聞こえます –

+0

ああ、そんなに怠け者なんだよ... AJAXを避けることができると思ってどれくらいの時間を... Deuuuude ...私に信頼を寄せてください...笑 – Moon

5

リンクがサーバー側のコード(PHPなど)を実行しているページを呼び出し、ブラウザを別の場所に誘導するように思えます。これは通常、サーバー側のスクリプトが2番目のURLでリダイレクト応答を送信することによって行われます。

1

"なぜ?"と言った人には、理由があります。中クリック。サーバーから詳細を取得して同じページで準備できるAJAXがあるかもしれませんが、ミドルクリッカーが新しいページのデータを見たい場合はブロックされます。

レポートでは、このようなことを望むユーザーに同じ機能が提供されます。

慣習的なミドルクリッカーとして、私は情熱を持ってタグを嫌いです。私はGreaseMonkeyで見つかった、時々onclickにjavascriptのhrefを再割り当てし、hrefの有効なURLを解析しようとすることができます。私は本当に新しいタブでJavascriptを開くと、ページをクローンしてコードを実行するだけでいいと思います。

関連する問題