Vurgulanan metni örneğin jQuery kullanarak bir web sitesinin paragrafında elde etmek mümkün müdür?
Vurgulanan metni örneğin jQuery kullanarak bir web sitesinin paragrafında elde etmek mümkün müdür?
Yanıtlar:
Kullanıcının seçtiği metni almak nispeten basittir. window
Ve document
nesnelerinden başka bir şeye ihtiyacınız olmadığından jQuery'yi dahil ederek kazanılmanın bir yararı yoktur .
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;
}
Seçimler <textarea>
ve metin <input>
öğeleriyle de ilgilenecek bir uygulama ile ilgileniyorsanız , aşağıdakileri kullanabilirsiniz. Şimdi 2016 beri IE <= 8 desteği için gerekli kodu atlıyorum ama SO birçok yerde bunun için şeyler yayınladım.
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()
) içindir. document.selection.type
Çek seçimi bir metin seçimi ziyade bir kontrol seçimi olduğunu test ediyor. IE'de, bir kontrol seçimi, düzenlenebilir bir öğenin içinde, anahatlar ve yeniden boyutlandırma tutamaçları olan bir veya daha fazla öğe (görüntüler ve form denetimleri gibi) içeren bir seçimdir. .createRange()
Böyle bir seçim çağırırsanız , a ControlRange
yerine bir olsun TextRange
ve ControlRange
s text
özelliği yok .
selectionStart
veya olmayan selectionEnd
bir <input>
öğe türünde ("sayı" gibi) uyarı almanızdır. destekleyin ( örneğin bkz. jsfiddle.net/6zoposby/2 ). Ben selectionStart
kodu IE <= 8 kırmayacak şekilde varlığı için kontrol bıraktı . Ben kontrol için activeElement
muhtemelen şimdi overkill olduğunu itiraf . Kullanıyorum slice
çünkü daha güçlü (burada kullanışlı olmasa da) ve yazmaktan biraz daha kısa substring
.
Vurgulanan metni şu şekilde alın:
window.getSelection().toString()
ve elbette, örneğin:
document.selection.createRange().htmlText
document.selection
IE10'da destek kaldırıldı ve onunla değiştirildi window.getSelection
”. Kaynak: connect.microsoft.com/IE/feedback/details/795325/…
Bu çözüm, krom kullanıyorsanız (diğer tarayıcıları doğrulayamıyorsanız) ve metin aynı DOM Öğesinde bulunuyorsa çalışır:
window.getSelection().anchorNode.textContent.substring(
window.getSelection().extentOffset,
window.getSelection().anchorOffset)
Kullanın window.getSelection().toString()
.
Developer.mozilla.org adresinden daha fazla bilgi edinebilirsiniz