Uzyskanie zaznaczonego tekstu w przeglądarce, wieloplatformowe

Jedną z rzeczy, które chciałbym zrobić w mojej aplikacji opartej na przeglądarce, jest umożliwienie użytkownikowi wybrania tekstu (nie w

Znalazłem wiele rzeczy w google, które wydają się skupiać się na pisaniu edytorów WYSIWYG, ale nie tego chcę , i większość z tego działa w IE, ale nie w FF2 lub 3. Idealnie, chciałbym jakąś funkcję, która może zwrócić aktualnie wybrany tekst w oknie przeglądarki, które działa w IE7 (i 6, jeśli to możliwe), FireFox 2 & 3 i Safari 2 . Jeśli to działa w Operze, to będzie bonus, ale to nie jest wymóg.

Ktoś ma taką funkcję? Albo pomysł od czego zacząć?

Author: Tshepang, 2008-08-14

5 answers

Spójrz na jQuery i wtyczkę wrapSelection. To może być to, czego szukasz.

 7
Author: palehorse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-13 23:52:35

Ta wtyczka jQuery jest fajna, ale spełnia bardzo konkretne zadanie: zawiń tekst, który podświetlisz tagiem. Może tego właśnie chcesz. Ale jeśli nie chcesz (lub jesteś w sytuacji, w której nie możesz) dodać żadnych obcych znaczników do swojej strony, możesz zamiast tego spróbować następującego rozwiązania:

function getSelectedText() {
  var txt = '';

  if (window.getSelection) {
    txt = window.getSelection();
  }
  else if (document.getSelection) {
    txt = document.getSelection();
  }
  else if (document.selection) {
    txt = document.selection.createRange().text;
  }
  else return; 

  return txt;
}

Ta funkcja zwraca obiekt reprezentujący zaznaczenie tekstu. Działa na różnych przeglądarkach (choć podejrzewam, że zwracane obiekty będą nieco inne w zależności od przeglądarka i tylko zależny od rzeczywistego tekstu wyniku, a nie żadnych dodatkowych właściwości).

Uwaga: oryginalnie odkryłem ten fragment kodu tutaj: http://www.codetoad.com/javascript_get_selected_text.asp

 15
Author: Greg Borenstein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-07 18:25:44

Wprowadzenie do zakresu zawiera kilka szczegółów na temat tego, jak różne przeglądarki zapewniają dostęp do zaznaczenia tekstu.

Moje doświadczenie jest takie, że praca z tymi różnymi interfejsami API jest dość niezdarna, więc jeśli wrapSelection działa dla Ciebie, wybrałbym to.

 1
Author: Walter Rumsby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-17 20:21:46

Zachowanie poszczególnych przeglądarek w odniesieniu do wyboru jest przedstawione tutaj .

 -1
Author: eplawless,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-17 20:25:28

Ten kod działa w Safari, IE i Firefoksie-mam nadzieję, że pomoże

var str = (window.getSelection) ? window.getSelection() : document.selection.createRange();
str = str.text || str;
str = str + ''; // the best way to make object a string...
 -3
Author: Polsonby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-07 19:38:37