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ąć?
5 answers
Spójrz na jQuery i wtyczkę wrapSelection. To może być to, czego szukasz.
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
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.
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 .
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...
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