2010-06-20 1 views
5

Как вы знаете, двойной щелчок по слову в браузере выбирает его, тройной щелчок выбирает весь абзац.HTML-код юзабилити - (двойной), чтобы выбрать текст

Я щипая вики, где подписи для анонимных пользователей создаются автоматически, и они выглядят как:

--- // <ip.ad.dr.ess> //

" --- "генерирует —, // для курсивного текста и генерирует <em> </em >.

Вот как это работает сейчас, когда я его подстраивал. Теперь мне интересно о удобстве использования.

Мой вопрос: как создать разметку таким образом, чтобы при двойном щелчке по ip-адресу был выбран весь адрес и только адрес?

Язык разметки не имеет значения, вы можете предоставить решение в формате HTML, но предпочтительнее указать для вики (dokuwiki).

Thanks

+0

Это, безусловно, разрешимо, но решение, вероятно, будет сложным. Для чего это? Разве это не может быть проще изменить Wiki, чтобы он не добавлял контент автоматически? –

+0

Я настраиваю его, чтобы добавить этот контент. Это работает, но теперь мне интересно о доступности – Flavius

+0

Для чего это? Что вы подразумеваете под доступностью? –

ответ

5

Спасибо всем, но мне удалось это сделать, используя текстовое поле readonly, установленное без границ и с фоновым цветом фона веб-сайта.

Двойной щелчок работает, как и ожидалось, без использования клиентских сценариев.

2

Вы не можете сделать это с помощью HTML. Может быть, с Javascript. В основном, вы просто обнаруживаете двойные щелчки в определенной области, а затем выбираете соответствующий текст.

EDIT:

Вот как это сделать в W3C совместимый браузер (например, Firefox, это, вероятно, не будет работать в IE, который не является W3C совместимый браузер и использует другую модель выбора текста):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html> 
    <head> 
     <script type="text/javascript"> 
      function select(elem) { 
       var sel = window.getSelection(); 
       var range = sel.getRangeAt(0); 
       range.selectNode(elem); 
       sel.addRange(range); 
      }    
     </script> 
    </head> 
    <body> 
     <p>a simple paragraph, this is 
      <span onclick="select(this);">clickable area</span> 
      when this 
      <span ondblclick="select(this);">span tag is double-clicked</span> 
      then they will be selected 
     </p> 
    </body> 
</html> 
+0

В последнем хром я получаю как первый параметр функции событие, поэтому заменил параметр 'e' и' elem' на 'e.target', и он работал красиво. – haridsv

+0

В соответствии с документацией «Событие» первым параметром является сам объект события, а не элемент. См. Https://developer.mozilla.org/en/docs/Web/API/Event. Edit: Просто заметили, что вы явно передаете 'this' в качестве первого параметра. – haridsv

+0

@haridsv: это правильно, если вы прикрепляете обработчик событий с помощью addEventListener(). Когда событие присоединяется inline с атрибутом @onclick, как здесь, параметры определяются тем, что вы передали обработчику, который в этом случае является 'this', который является элементом. В настоящее время, вероятно, лучше применить ненавязчиво с помощью addEventListener() или с jquery, чем привязать к атрибуту onclick. –