在JavaScript中获取突出显示的文本

时间:2016-12-29 11:21:49

标签: javascript

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课程的代码窗口中选择文本时会发生这种情况。

为什么上面的函数返回空文本以及解决方法是什么?

提前致谢。

0 个答案:

没有答案