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

发布于 2024-11-16 08:17:34 字数 85 浏览 2 评论 0原文

如果我不知道哪个文本框/文本区域处于活动状态(聚焦),如何从文本框/文本区域获取所选文本。我正在尝试创建一个小书签,它将更正页面上任何类型输入中的选定文本。

How can get the selected text from a textbox/textarea if I don't know which one active (focused). I am trying to create a small bookmarklet that will correct the selected text in any type of input on a page.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

芯好空 2024-11-23 08:17:34

对于选择,您需要 selectionStartselectionEnd

对于当前聚焦的元素,使用document.activeElement

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

正如 Tim Down 指出的那样,您需要针对 Internet Explorer 版本 8 或更低版本的更复杂的解决方案: 文本区域中的插入符位置,从头开始的字符

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);

For the selection, you want selectionStart and selectionEnd.

As for the currently focused element, use document.activeElement.

So as a combination you can use: http://jsfiddle.net/rBPte/1/.

As Tim Down pointed out, you'd need a more complex solution for Internet Explorer version 8 or lower: 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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文