在多个节点上创建范围
Creating a range over multiple nodes
我正试图使用coffeescript/javascript创建一个范围,当用户滚动某些文本时,该范围会返回几句文本。偏移量向后移动了40个位置,但这有时意味着要进入前一个节点。我该如何正确地实现这一点?
我所拥有的(只要我不离开节点就可以工作):
//expanding a previously defined range
new_start = range.startOffset- 40
startNode = range.startContainer
range.setStart(startNode, new_start)
try
new_end = range.startOffset + 60
range.setEnd(startNode, new_end)
catch e
range.setEndAfter(startNode)
正如你所看到的,我的代码不是很好,做了很多假设,所以当涉及到转换这些节点时,有人可以引导我朝着正确的方向前进,我会非常高兴。
标记示例(这很可怕):
<div id="content"><p>
<strong>Title Stuffs<br>
Yep, a random break<br>
yes, another!</strong>
</p>
<p>
<a href="http://internet.co">http://itnernet.co</a>
</p>
<br>
<table>
<tbody>
<tr>
<td>
<img src="someimage">
</td>
</tr>
</tbody>
</table>
<p>
<br>
Blah blah blah<br>
<br>
more words, going to stop here. you get the idea.
</p></div>
这个问题是我之前一个问题的后续问题。
此行之后:
new_start = range.startOffset- 40
检查new_start是否为负数,如果为负数,则将其设置为零
new_start = range.startOffset - 40;
if(new_start < 0)
new_start = 0;
这就是你目前的问题。不过,你确实有另一个问题。您的末尾也可能溢出当前文本。因此,您应该检查endOffset < selection.extentNode.length
。
相关文章:
- 从指定范围创建字符数组
- 如何创建一个方法来验证数组的范围
- 将值添加到使用_.map&_创建的变量中.范围
- 我怎样才能创建一个函数expr;t继承词法范围
- 使用javascript中的var关键字创建块范围的变量
- 使用范围作为 id 在传单中创建地图
- 我可以设置这个吗'某事'在该服务中动态创建的嵌套对象中的服务?(可能是范围问题)
- 需要创建一个函数,将我自己创建的范围对象转换为字符串
- Google Sheets-使用脚本创建范围(行)
- 在多个节点上创建范围
- 使用 noUiSlider 通过点击事件创建范围时出错
- 创建范围功能在除IE以外的其他浏览器中不起作用
- HTML5 通过 JavaScript 动态创建范围
- 如何从点(X 和 Y 坐标)创建范围对象
- 如何使用javascript创建范围验证器?在VS中不使用范围验证器控件
- 在html中创建范围滑块
- 当我只知道字符偏移量时,如何创建范围对象?
- Jquery Mobile动态创建范围变化事件不触发
- 这个用于创建范围的递归函数如何工作
- 无法创建范围()