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 windowdan documentbenda-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.typecek 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 ControlRangelebih dari satu TextRange, dan ControlRangetidak memiliki textproperti.
selectionStartatau selectionEnddalam <input>tipe elemen (seperti "angka") yang tidak mendukungnya (lihat jsfiddle.net/6zoposby/2 , misalnya). Saya meninggalkan cek untuk keberadaan selectionStartsehingga kode tidak akan rusak di IE <= 8. Saya akui cek untuk activeElementitu mungkin berlebihan sekarang. Saya menggunakan slicekarena 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