One of the things I'd like to do in my browser-based application is allow the user to select some text (not in a
I've found a lot of stuff on google that seems to be focused on writing WYSIWYG editors, but that isn't what I want, and most of it worked in IE but not in FF2 or 3. Ideally, I'd like some function that can return the currently selected text in the browser window that works in IE7 (and 6 if possible), FireFox 2 & 3 and Safari 2. If it works in Opera, that'd be a bonus, but it's not a requirement.
Oricine are o funcție care face asta? Sau o idee despre unde să începem?
Priviți jQuery și plug-in de selecție . Aceasta poate fi ceea ce căutați.
Introduction to Range has some details on how different browsers give you access to the text selection.
Experiența mea este că lucrul direct cu aceste API-uri diferite este destul de stângace, deci dacă wrapSelection funcționează pentru dvs. I Mă duc cu asta.
Comportamentul browserelor individuale în ceea ce privește selecția este prezentat aici .
Acest cod funcționează în Safari, IE și Firefox - sperăm că este de ajutor
var str = (window.getSelection) ? window.getSelection() : document.selection.createRange();
str = str.text || str;
str = str + '';//the best way to make object a string...
Acest plugin JQuery este cool dar realizează o sarcină foarte specifică: împachetați textul pe care îl evidențiați cu o etichetă. Aceasta poate fi exact ceea ce vrei. Dar dacă nu doriți să adăugați pe pagina dvs. marcaj străin (sau vă aflați într-o situație în care nu puteți), puteți încerca următoarea soluție:
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;
}
Această funcție returnează un obiect reprezentând selecția textului. Funcționează în toate browserele (deși bănuiesc că obiectele pe care le întoarce vor fi ușor diferite în funcție de browser și vor fi dependente doar de textul real al rezultatului, mai degrabă decât de oricare dintre proprietățile suplimentare).
Note: I originally discovered that code fragment here: http://www.codetoad.com/javascript_get_selected_text.asp