Mendapatkan teks yang dipilih di browser, cross-platform

Salah satu hal yang saya'd ingin lakukan di dalam browser berbasis aplikasi ini memungkinkan pengguna untuk memilih beberapa teks (tidak di a <textarea>, sekadar ol' text!), dan memiliki aplikasi pop up toolbar kecil yang kemudian dapat berinteraksi dengan berikutnya (dalam kasus saya, tambahkan anotasi).

I've menemukan banyak hal di google yang tampaknya difokuskan pada menulis WYSIWYG editor, tapi itu isn't apa yang aku inginkan, dan sebagian besar bekerja di IE tapi tidak di FF2 atau 3. Idealnya, saya'd seperti beberapa fungsi yang dapat mengembalikan teks yang sedang dipilih di jendela browser yang bekerja di IE7 (dan 6 jika mungkin), FireFox 2 & 3 dan Safari 2. Jika bekerja di Opera, yang'd menjadi bonus, tapi itu's bukan persyaratan.

Siapa pun memiliki fungsi yang melakukan hal ini? Atau ide dari mana untuk memulai?

Itu plugin jQuery keren tapi itu menyelesaikan tugas yang sangat spesifik: membungkus teks yang anda sorot dengan tag. Ini mungkin hanya apa yang anda ingin. Tapi jika anda don't ingin (atau berada dalam situasi di mana anda dapat't) tambahkan asing markup ke halaman anda, anda dapat mencoba solusi berikut ini sebagai pengganti:

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;
}

Fungsi ini mengembalikan sebuah objek yang mewakili seleksi teks. Ia bekerja di browser (meskipun saya menduga benda itu kembali akan sedikit berbeda tergantung pada browser dan hanya dapat diandalkan untuk teks yang sebenarnya dari hasil melainkan dari salah satu sifat tambahan).

Catatan: awalnya saya menemukan bahwa fragmen kode berikut: http://www.codetoad.com/javascript_get_selected_text.asp

Komentar (3)
Larutan

Silahkan lihat di jQuery dan wrapSelection plugin. Itu mungkin apa yang anda cari.

Komentar (0)

Pendahuluan untuk Range memiliki beberapa rincian tentang bagaimana browser yang berbeda memberikan anda akses ke pilihan teks.

Pengalaman saya adalah bahwa bekerja dengan orang yang berbeda Api langsung cukup canggung jadi jika wrapSelection bekerja untuk anda aku'd pergi dengan itu.

Komentar (0)

Hari ini metode ini cukup:

function getSelectedText() {
    return window.getSelection ? window.getSelection().toString() : '';
}

Itu akan kembali&#39;&#39; dalam kesempatan langka yang benar-benar browser lama dan mungkin dalam kasus Opera Mini (yang akan diuji, meskipun, ini mungkin menjadi usang) + lihat catatan untuk UC Browser untuk Android.

Komentar (0)

Perilaku individu browser berkenaan dengan pemilihan diuraikan di sini.

Komentar (0)

Kode ini bekerja di Safari, IE dan Firefox - harapan itu's bantuan

var str = (window.getSelection) ? window.getSelection() : document.selection.createRange();
str = str.text || str;
str = str + ''; // the best way to make object a string...
Komentar (0)