Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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_Range_Getselection - Fatal编程技术网

Javascript扫描选定单词前后的单词

Javascript扫描选定单词前后的单词,javascript,range,getselection,Javascript,Range,Getselection,我试图生成一个完整的句子,其中一个单词是使用javascript突出显示的 window.getSelection 给我突出显示的单词。我一直在搜索javascript范围的示例,但仍然不完全理解如何通过向后移动选择直到找到标点,然后向前移动直到找到标点来循环 例如: 社交媒体与神经症的关系令人担忧。痴迷的 人对于像Facebook和Twitter这样的网站来说是必不可少的。他们补充说 能量和嗡嗡声。他们的身份与他们的头像联系在一起 这本身就让网站显得很重要。它们提供了很多信息 内容。去年秋

我试图生成一个完整的句子,其中一个单词是使用javascript突出显示的

window.getSelection 
给我突出显示的单词。我一直在搜索javascript范围的示例,但仍然不完全理解如何通过向后移动选择直到找到标点,然后向前移动直到找到标点来循环

例如:

社交媒体与神经症的关系令人担忧。痴迷的 人对于像Facebook和Twitter这样的网站来说是必不可少的。他们补充说 能量和嗡嗡声。他们的身份与他们的头像联系在一起 这本身就让网站显得很重要。它们提供了很多信息 内容。去年秋天发表的一项研究报告说,两万 推特上的用户提供了那里阅读内容的一半。但强迫症患者是 也很危险。它们会让网站看起来令人毛骨悚然

如果我选择上面的“Facebook”一词,我的最后一个字符串应该是“对于Facebook和Twitter这样的网站来说,痴迷的人是必不可少的。”


更新1:

下面提到的代码可以工作,但如果有html标记,则会停止

例如:

如果你深入研究商务部的报告,你会发现一些更令人失望的报告 数字。撇开生产存货的商品 公司增加库存以备出售 后来,该季度经济仅增长了1.6%。 资本投资,这应该是激增在这一点上的世界 经济复苏几乎没有任何起色。以及个人可支配收入 纳税后人们必须花费的钱的数量增加了 只有0.4%

通过选择上面的“查找”,输出的句子是“你可以找到一些更令人失望的数字”,而不是“如果你深入研究商务部的报告,你可以找到一些更令人失望的数字”


如何在前后匹配时删除标记?

窗口。getSelection
返回一个对象,您可以从该对象中获取一个值,该值反过来为您提供开始和结束偏移量。剩下的是显而易见的:

rng = window.getSelection().getRangeAt(0)
start = rng.startOffset
end = rng.endOffset
text = rng.startContainer.nodeValue

before = text.substr(0, start)
sel = text.substr(start, end - start)
after = text.substr(end)

sentence = before.match(/[^.!?]*$/)[0] +  sel + after.match(/^[^.!?]*/)[0]

这适用于FF和Chrome,IIRC,在MSIE中情况看起来不同。有关更多信息,请参阅。

我正在为我的库进行这项工作,并且非常接近初始版本。这是一个正在进行的演示: