2010-06-20 14 views
5

Jak dobrze wiesz, podwójne kliknięcie słowa w przeglądarce powoduje jego zaznaczenie, potrójne kliknięcie powoduje zaznaczenie całego akapitu.Pytanie o użyteczność HTML - (podwójne) kliknięcie, aby zaznaczyć tekst.

jestem szczypanie wiki, gdzie podpisy dla anonimowych użytkowników są tworzone automatycznie i wyglądają następująco:

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

The " --- "generuje wartość —, // w przypadku tekstu pisanego kursywą i generuje <em> </em >.

Tak to działa teraz, gdy go poprawiłem. Teraz zastanawiam się nad użytecznością.

Moje pytanie brzmi: jak wygenerować znacznik taki, że po dwukrotnym kliknięciu adresu IP zostanie wybrany cały adres i tylko adres?

Język znaczników nie ma znaczenia, możesz podać rozwiązanie w języku HTML, ale preferowane jest jedno właściwe dla wiki (dokuwiki).

Dzięki

+0

Jest to z pewnością rozwiązalne, ale rozwiązanie może być skomplikowane. Po co to? Czy nie byłoby łatwiej zmienić Wiki, aby nie dodawała treści automatycznie? –

+0

Jestem tym, który ulepsza to, aby dodać tę zawartość. Działa, ale teraz zastanawiam się nad dostępnością. – Flavius

+0

Po co to jest? Co masz na myśli przez dostępność? –

Odpowiedz

5

Dziękuję wszystkim, ale udało mi się to zrobić za pomocą pola tekstowego ustawionego bez granic i koloru tła strony internetowej.

Podwójne kliknięcie działa zgodnie z oczekiwaniami, bez polegania na skryptach po stronie klienta.

2

Nie można tego zrobić za pomocą HTML. Może z Javascriptem. Zasadniczo po prostu wykrywasz podwójne kliknięcia w określonym obszarze, a następnie wybierasz odpowiedni tekst.

EDIT:

Oto jak to zrobić w przeglądarce zgodnej W3C (np Firefox, to prawdopodobnie nie będzie działać w IE, który nie jest zgodny z W3C przeglądarka i używa innego modelu zaznaczonego tekstu):

<!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

W najnowszym chrome, co otrzymuję jako pierwszy parametr funkcji jest zdarzenie, więc zastąpiłem parametr 'e' i' elem' z 'e.target' i to działało pięknie. – haridsv

+0

Zgodnie z dokumentacją "zdarzenia", pierwszym parametrem jest w rzeczywistości sam obiekt zdarzenia, a nie element. Zobacz https://developer.mozilla.org/en/docs/Web/API/Event. Edycja: zauważyłem, że jawnie przekazujesz 'this' jako pierwszy parametr. – haridsv

+0

@haridsv: to jest poprawne, jeśli dołączasz obsługę zdarzeń za pomocą metody addEventListener(). Gdy wydarzenie zostanie dołączone do atrybutu @onclick, jak tutaj, parametry są określane przez cokolwiek przekazałeś do obsługi, która w tym przypadku jest "tym", który jest elementem. W dzisiejszych czasach prawdopodobnie lepszym rozwiązaniem jest dołączanie dyskretnie przy użyciu metody addEventListener() lub jquery niż dołączanie do atrybutu onclick. –

Powiązane problemy