stackoverflow上有很多答案。 我用了这段代码:
function getSelectedText() {
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();
}else if (document.selection) {
return document.selection.createRange().text;
}
return text;
}
它在许多网站上运行良好,但在许多网站上,代码是动态生成的(使用react),如udacity,上面的函数会给出空文本。
当我在udacity课程的代码窗口中选择文本时会发生这种情况。
为什么上面的函数返回空文本以及解决方法是什么?
提前致谢。