【发布时间】:2018-11-26 10:16:19
【问题描述】:
在 vanilla Javascript 中,我试图确定用户在网页上选择的文本是否全部由单词组成(不包括符号)。
举个例子,
假设我们在网页某处有如下文本。
您好,示例文本! (全选时)
应该是['Hello', 'a', 'text', 'for', 'the', 'example']
然而,
Hello,示例文本! (省略前三个字母)
应该导致['a', 'text', 'for', 'the', 'example'],因为Hello 没有被完全选为一个词。
到目前为止,我有一个 getSelectionText 函数,它可以带来所有选定的文本。
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type !== "Control") {
text = document.selection.createRange().text;
}
return text;
}
// Just adding the function as listeners.
document.onmouseup = document.onkeyup = function() {
console.log(getSelectionText());
};
有没有什么好的方法可以调整我的功能以使其像我提到的那样工作?
【问题讨论】:
-
正则表达式应该如何知道,'llo' 不是一个完整的单词?正则表达式不懂任何语言。
-
@PoulBak 感谢您指出这一点!我删除了
regex标签! -
您需要将所选文本与整个文本进行比较,以确定是否选择了部分作品。或者使用已知单词的字典来比较所有内容。
-
@HereticMonkey 谢谢你的意见!但由于它是任何网页上的随机文本(因为此代码用于 chrome 扩展),我如何获取整个文本而不是整个段落?
-
当您创建范围时,请尝试同时覆盖它旁边的文本。然后您可以检查是否存在单词边界(例如空格)或用户选择是否从单词中间开始。
标签: javascript html selection