Javascript:包含特殊字符的文本选择

时间:2015-03-30 21:56:02

标签: javascript html web range selection

我使用这个javascript代码抓住插入符号前面的单词:

sel = window.getSelection()
var selectedRange = sel.getRangeAt(0);
sel.collapseToStart();
sel.modify("move", "backward", "word");
sel.modify("extend", "forward", "word");

这就得到了这个词,即使没有尾随空格(例如"单词")但是在单词的末尾省略了特殊字符(例如,而不是"单词:&# 34; 只是" word" )。

如果我在一个单词中包含冒号,例如" wo:rd",则会得到所有5个字符。

但我真的需要得到尾随的特殊字符。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我明白了,我为示例代码的邋iness道歉,但这里是:jsFiddle

var i = 0;

function getBeforeSelection() {
    var sel = window.getSelection(),
        selectedRange = sel.getRangeAt(0),
        sel2,
        res,
        finalValue,
        regexObj;

    sel.collapseToStart();
    sel.modify("move", "backward", "word");
    sel.modify("extend", "forward", "word");

    finalValue = sel.toString();

    regexObj = new RegExp(finalValue + '[^A-Za-z0-9\s\b]*');

    res = sel.focusNode.nodeValue.trim().match(regexObj);

    alert(res);

}

// added for sake of example, calls getBeforeSelection on double click 
// (when selection is made)
document.addEventListener('click', function (e) {
    i++;

    if (i > 1) {
        getBeforeSelection();
        i = 0;
    } 
});