2010-12-30 5 views
2

ハイパーリンクの作成方法<a>Link</a>ダブルクリックリンク:i:eリンクはダブルクリックで開き、シングルクリックは何もしないでください。ダブルクリックでリンクを開く

+6

JavaScriptでこれを行うことができます:http://www.quirksmode.org/js/introevents.htmlしかし、非常に特殊なケースではない場合、私はそうするよう助言しません。ユーザーはリンクをダブルクリックすることはありません。常に、最小の驚きの原則に従ってください。 –

+0

通常のシングルクリックに問題はありますか? – Oded

+7

好奇心が強い、ユースケースは何ですか?他の* 99.99%のウェブとは違う*の行動は、一般的には良い考えではありません。 –

答えて

13

がわかりましたので、あなたははこれを行うことができます:

HTML:

<a id='golink' href='gosomewhere.html'>Go Somewhere</a> 

JavaScriptを使用してjQueryのを:

jQuery(function($) { 
    $('#golink').click(function() { 
     return false; 
    }).dblclick(function() { 
     window.location = this.href; 
     return false; 
    }); 
}); 

Live copy

(IDである必要はありません。これを行うには、jQueryが処理できるセレクタをクラスまたはその他のもので処理することができます。

JavaScriptを無効にすると、リンクは正常に動作します。クローラは通常リンクを見つけます。ユーザーがJavaScriptを有効にすると、イベントハンドラが接続され、ダブルクリックが必要になります。

上記はそう、あなたはそれを処理する必要が、しかし、キーボードナビゲーションを吹き飛ばす:

jQuery(function($) { 
    $('#golink').click(function() { 
     return false; 
    }).dblclick(function() { 
     window.location = this.href; 
     return false; 
    }).keydown(function(event) { 
     switch (event.which) { 
      case 13: // Enter 
      case 32: // Space 
       window.location = this.href; 
       return false; 
     } 
    }); 
});​ 

Live copy

私は、これは、アクセシビリティのために良いです想像できない、と私は賭け、他のがあります上記のために調理されていないもの。これはすべてに送り込ま:

しかし、私はが強く、本当に良いユースケースなしでをやっに対してお勧めします。私は答えを探してきた、

<a ondblclick= "openLink('your_link')">Link</a> 

<script> 
function openLink(link) 
{ 
    location.href = link; 
} 
</script> 

OR

<a ondblclick="location.href='your_link'">Double click on me</a> 
+0

+1:これはJSなしで正常に動作する唯一の答えです。 – nico

+1

よくOPによると、JSなしでは、彼は彼の神がダブルクリックを気にしたいので、正しく動作しません:) –

+0

@ヤン:確かに。誰もが幸せになろうとしました。 :-) –

-1

あなたはJavascriptを使用して行うことができます。

<a href="#" onclick="javascripot:void(0)" ondblclick="javascript:DoMyWorkFunction()">a:x</a> 
+0

DOM0(属性)イベントハンドラでは 'javascript:'を使用しません。 'href'などのみ。 –

+0

なぜ私たちはjavascriptを使用できません:? – Bhaskar

3

ではなく、リンクのスパンを使用してみてください。このような何か:

<span ondblclick="window.location='http://www.google.com'" style="color:blue;text-decoration: underline;">Click Here</span> 
+6

バングはアクセシビリティになります。そして、Webクローラー。そしてタブ... –

+1

それは本当であり、よりよい方法かもしれないが、私の答えは彼が望むものをする。否定を理解していない。 – goenning

+1

@Guilherme Oenning:OPが望んでいるものを実装する方がはるかに良い方法があります。最初にダブルクリックを実装するべきではありませんが、彼はそれを行うには「」ではなく「 '。 – nico

-1

はこれを試してみてください。私はこれを思いついた(Chromeでテスト済み)。リンクに次の属性を追加してください。

onclick="return false" ondblclick="location=this.href" 

<a onclick="return false" ondblclick="location=this.href" href="http://www.google.com">Google</a> 
+4

'name'や' href'属性を持たない 'a'要素は無効です:http://validator.w3.org –

0

グレート質問:

+0

'target'という振る舞いを使いたいのであれば、私の作品。 – Chalky

関連する問題