2010-12-30 6 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

(Это не должен быть идентификатор; вы можете сделать это с помощью класса или чего-нибудь еще, что позволит вам сформировать селектор, который может обрабатывать 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

Я не могу себе представить, что это хорошо для доступности, и я держал пари, есть и другие вещи, которые не обслуживаются выше. Что все каналы в:

Но я бы настоятельно рекомендуем это делать без действительно хороший использования.

+0

+1: это единственный ответ, который будет корректно работать без JS. – nico

+1

Ну, в соответствии с OP, без JS это не сработает должным образом, так как он хочет, чтобы его чертово проклятый двойной щелчок :) –

+0

@Jan: Действительно. Я пытался сделать всех счастливыми. :-) –

-1

Вы можете сделать это с помощью Javascript:

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

Вы не используете 'javascript:' в обработчиках событий DOM0 (attribute). Только 'href' и тому подобное. –

+0

Почему мы не используем javascript:? – Bhaskar

3

Попробуйте использовать пядь вместо ссылки. Что-то вроде этого:

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

Банг идет к доступности. И веб-сканеры. И tabbing ... –

+1

Хотя это правда и может быть лучше, мой ответ делает то, что он хочет. Не понял отрицательного. – goenning

+1

@Guilherme Oenning: Есть намного лучшие способы реализации того, что хочет OP: хотя он не должен в первую очередь реализовывать двойной щелчок, если он хочет сделать это, он должен сделать это с помощью '' не ' '. – nico

-1

попробовать это:

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

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

ИЛИ

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

Элементы 'a' без атрибутов' name' или 'href' недействительны: http://validator.w3.org –

0

Большой вопрос, я искал ответ. Я придумал это (проверено в Chrome). Добавьте эти атрибуты в свою ссылку:

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

e.g.

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

Очевидно, что вам нужно предпринять дополнительные шаги, если вы хотите использовать« целевое »поведение, но для простых вещей , шахтные работы. – Chalky

Смежные вопросы