2009-08-20 8 views

答えて

0

本当にすべてのリクエストに対してこれを実行しますか?そうでない場合は、Jonの答えで最初の解決策を使用し、guidを持たないものは無視してください。

これはjavascriptで簡単に行うことができます。いずれかのリンクをクリックした後、もう一度クリックされるのを防ぐ:(いくつかのYUIを使用して):

YAHOO.util.Event.onDOMReady(function(){ 
    function killIt(e){ 
    YAHOO.util.Event.stopEvent(e); 
    } 

    var anchors = document.getElementsByTagName('a'); 
    for(var i = 0; i < anchors.length; i++){ 
    YAHOO.util.Event.addListener(anchors[i], 'click', function(e){ 
     var el = YAHOO.util.Event.getTarget(e); 
     YAHOO.util.Event.removeListener(el, 'click'); // kill existing handle 
     YAHOO.util.Event.addListener(el, 'click', killIt); // kill any future clicks 
    }); 
    } 
}); 

あなたはそれをクリックしたときにも、その後無効に係留作ることができます。少し違う。ストレートフォワードは、シングルクリックのみを有効にしたいアンカーでこれを実装するだけです。

2

通常、あなたは何らかの種類の「リクエスト識別子」をリンクに入れます。 GUID。あなたはすでに見た識別子を怠惰に追跡し(そしてそのセット内の何かを無視する)、あなたが生成したが見えない識別子を追跡します(そして、はそのセット内のを無視します)。

+1

これは人とのリンクを共有している場合にあなたを噛んでしまう可能性があります。 –

+0

@Steve - これは通常、フォームの投稿に問題があり、GUIDはURLのパラメータではなく隠れた入力として含まれています。 –

+0

@スティーブ:それは問題に内在する問題だと思います。 OPは彼がこれで何をするのか注意深くする必要があります。しかし、常に本質的に「共有できない」リンクがいくつかあります。 –

0

リンクを動的に無効にするためだけに、巨大なJavascriptフレームワークを使用する理由はまったくありません。

<a href="/test" onmouseup="this.href='';" /> 

完了。

関連する問題