Javascript从页面上的任何textinput/textarea获取选定的文本

Bar*_*uch 6 javascript bookmarklet

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

pim*_*vdb 20

对于选择,你想要selectionStartselectionEnd.

至于目前关注的元素,请使用document.activeElement.

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

正如Tim Down指出的那样,你需要一个更复杂的Internet Explorer 8或更低版本的解决方案:在textarea中的插入位置,从一开始就是字符

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);
Run Code Online (Sandbox Code Playgroud)

  • IE <9不支持`selectionStart`和`selectionEnd`.请参阅我的答案,以获得跨浏览器功能:http://stackoverflow.com/questions/263743/how-to-get-cursor-内位置的textarea/3373056#3373056 (2认同)