Apakah mungkin untuk mendapatkan teks yang disorot dalam paragraf situs web misalnya dengan menggunakan jQuery?
Apakah mungkin untuk mendapatkan teks yang disorot dalam paragraf situs web misalnya dengan menggunakan jQuery?
Jawaban:
Mendapatkan teks yang dipilih pengguna relatif sederhana. Tidak ada manfaat yang bisa diperoleh dengan melibatkan jQuery karena Anda perlu apa-apa selain window
dan document
benda-benda.
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
Jika Anda tertarik pada implementasi yang juga akan menangani pilihan <textarea>
dan <input>
elemen teks , Anda bisa menggunakan yang berikut ini. Karena sekarang 2016 saya menghilangkan kode yang diperlukan untuk dukungan IE <= 8 tetapi saya telah memposting hal-hal untuk itu di banyak tempat di SO.
function getSelectionText() {
var text = "";
var activeEl = document.activeElement;
var activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null;
if (
(activeElTagName == "textarea") || (activeElTagName == "input" &&
/^(?:text|search|password|tel|url)$/i.test(activeEl.type)) &&
(typeof activeEl.selectionStart == "number")
) {
text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);
} else if (window.getSelection) {
text = window.getSelection().toString();
}
return text;
}
document.onmouseup = document.onkeyup = document.onselectionchange = function() {
document.getElementById("sel").value = getSelectionText();
};
Selection:
<br>
<textarea id="sel" rows="3" cols="50"></textarea>
<p>Please select some text.</p>
<input value="Some text in a text input">
<br>
<input type="search" value="Some text in a search input">
<br>
<input type="tel" value="4872349749823">
<br>
<textarea>Some text in a textarea</textarea>
window.getSelection()
). The document.selection.type
cek menguji bahwa seleksi adalah pilihan teks daripada pilihan kontrol. Di IE, pilihan kontrol adalah pilihan di dalam elemen yang dapat diedit yang mengandung satu atau lebih elemen (seperti gambar dan kontrol bentuk) dengan garis besar dan mengubah ukuran pegangan. Jika Anda memanggil .createRange()
pilihan semacam itu, Anda mendapatkan ControlRange
lebih dari satu TextRange
, dan ControlRange
tidak memiliki text
properti.
selectionStart
atau selectionEnd
dalam <input>
tipe elemen (seperti "angka") yang tidak mendukungnya (lihat jsfiddle.net/6zoposby/2 , misalnya). Saya meninggalkan cek untuk keberadaan selectionStart
sehingga kode tidak akan rusak di IE <= 8. Saya akui cek untuk activeElement
itu mungkin berlebihan sekarang. Saya menggunakan slice
karena lebih kuat (meskipun itu tidak berguna di sini) dan sedikit lebih pendek untuk mengetik daripada substring
.
Dapatkan teks yang disorot dengan cara ini:
window.getSelection().toString()
dan tentu saja perlakuan khusus untuk:
document.selection.createRange().htmlText
document.selection
dukungan telah dihapus di IE10 dan diganti dengan window.getSelection
". Sumber: connect.microsoft.com/IE/feedback/details/795325/...
Solusi ini berfungsi jika Anda menggunakan chrome (tidak dapat memverifikasi browser lain) dan jika teksnya berada di Elemen DOM yang sama:
window.getSelection().anchorNode.textContent.substring(
window.getSelection().extentOffset,
window.getSelection().anchorOffset)
Menggunakan window.getSelection().toString()
.
Anda dapat membaca lebih lanjut di developer.mozilla.org