Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:包含特殊字符的文本选择_Javascript_Html_Web_Range_Selection - Fatal编程技术网

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

Javascript:包含特殊字符的文本选择,javascript,html,web,range,selection,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"); 它获取单词,即使没有尾随空格(例如“word”),但省略了单词末尾的特殊字符(例如,代替“word

我使用此javascript代码获取插入符号前面的单词:

sel = window.getSelection()
var selectedRange = sel.getRangeAt(0);
sel.collapseToStart();
sel.modify("move", "backward", "word");
sel.modify("extend", "forward", "word");
它获取单词,即使没有尾随空格(例如“word”),但省略了单词末尾的特殊字符(例如,代替“word:仅获取“word”

如果我在一个单词中包含冒号,比如“wo:rd”,这将获得所有5个字符


不过,我真的需要得到尾随的特殊字符。我怎样才能做到这一点呢?

我明白了,我为示例代码的粗枝大叶道歉,但这里是:


好问题,我正在研究一个解决方案-似乎我们要寻找的输出是一个“选择”而不是一个“范围”,我们需要得到修改后的选择的值,然后将正则表达式与父节点的nodeValue匹配,比如/value+[^a-Za-z0-9]/ig
selection.modify()
是在浏览器之间不协调地实现的,IE并没有实现所有功能。另一种选择是(免责声明:由我编写),它在不同浏览器中一致地执行这些操作,并允许使用正则表达式指定单词的组成。在Firefox中不起作用<代码>选择。修改()在浏览器之间的实现不一致。
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;
    } 
});