javascript - 我如何知道 JavaScript Range 对象是否在同一段落内?

标签 javascript range

我想限制用户在同一段落内进行文本选择。

var selection = getSelection();
var range = selection.getRangeAt(0);

我想验证范围对象,以便如果范围“存在”在同一段落下,并且不以可能的同级段落结束,则该对象变得有效.

怎么做?

参见Range对象引用。

最佳答案

您可以使用Selection.toString()并检查选择内容是否有换行符。

var range = window.getSelection().toString();
if(!/\n/.test(range)){
...

编辑

换行符可能是由于 toString() 方法的实现而存在的。例如,您可以在 Chromium 源代码中看到此注释:

// Block flow (versus inline flow) is represented by having
// a newline both before and after the element.

此处:https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp&sq=package:chromium&type=cs

这可能更像是一种约定,而不是标准中的内容。所以它可能不是最强大的解决方案。但它很简单,可以轻松验证,并且在大多数情况下应该具有相当标准的行为。

关于javascript - 我如何知道 JavaScript Range 对象是否在同一段落内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34841235/

相关文章:

javascript - 检查常量类型而不加宽类型?

c - 确定两条线段是否与公差相交

haskell - 使用 Haskell 范围 : Why would mapping a floating point function across a range cause it to return an extra element?

javascript - 无限制地应用 Cloudant 搜索索引查询

javascript - 我如何在 Sequelize 中找到一小时外的值

javascript - 扩展特定的列标题以包含向上/向下箭头

javascript - 在 Bootstrap 中为标题设置全宽背景图像

google-apps-script - 在 Google Apps 脚本中取消合并

excel - 当行的A列对所有行都是Yes时锁定行中的选定单元格

Delphi XE : idHttp & Request. 范围,一个错误?