Javascript 从页面上的任何文本输入/文本区域获取选定的文本

标签 javascript bookmarklet

如果我不知道哪一个是事件的(重点),如何从文本框/文本区域获取选定的文本。我正在尝试创建一个小书签,它将更正页面上任何类型输入中的选定文本。

最佳答案

对于选择,您需要 selectionStartselectionEnd

对于当前获得焦点的元素,使用document.activeElement

因此,作为组合,您可以使用:http://jsfiddle.net/rBPte/1/ .

正如 Tim Down 所指出的,对于 Internet Explorer 版本 8 或更低版本,您需要一个更复杂的解决方案:Caret position in textarea, in characters from the start

function getText(elem) { // only allow input[type=text]/textarea
    if(elem.tagName === "TEXTAREA" ||
       (elem.tagName === "INPUT" && elem.type === "text")) {
        return elem.value.substring(elem.selectionStart,
                                    elem.selectionEnd);
        // or return the return value of Tim Down's selection code here
    }
    return null;
}

setInterval(function() {
    var txt = getText(document.activeElement);
    document.getElementById('div').innerHTML =
        txt === null ? 'no input selected' : txt;
}, 100);

关于Javascript 从页面上的任何文本输入/文本区域获取选定的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416020/

相关文章:

javascript - 将变量传递到自定义按钮

javascript - 在 THREE.js 中创建 50000 多个文本粒子

javascript - 在 Javascript 中用 1 个已知字符和一些未知字符分割字符串

javascript - 用 Javascript 替换 URL 的各个部分

php - Scrapy 可以在 PHP 上运行吗?

javascript - Div 内部和顶部的滚动条

javascript - 带有运行页眉和页脚的打印页面中的动态内容

javascript - 书签标题

javascript - 选择特定选项后显示隐藏字段

JavaScript:反转页面所有元素的颜色