问题标签 [rangy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
621 浏览

javascript - 带有css的范围的属性名称

如何使用 cssApplier 将跨度的属性名称放在 Ragy 中。一个例子:

我尝试:

但它不起作用。结果是:

它是范围内的错误吗?

0 投票
1 回答
514 浏览

javascript - 使用 Rangy,即使我通过 setStartBefore 方法扩展范围,range.canSurroundContents 方法仍然返回 false

我有以下html:

选择用|字符标记。还有选择的截图:

原始选择的屏幕截图

我可以使用以下代码片段扩展此选择以包含整个“a”元素(使用 Rangy 库http://code.google.com/p/rangy/):

要查看它的实际效果,请查看http://jsfiddle.net/LTwkZ/1/

并且以下返回 true:

问题是“range.canSurroundContents()”返回“假”。'a' 元素完全包含在范围内,从开始到结束,为什么不能使用 'canSurroundContents()' 以及我怎么能,如果可能的话。

谢谢!

0 投票
4 回答
2992 浏览

javascript - 将表格插入内容可编辑的 div

我有一个小提琴显示我的代码在做什么。使用 javascript/jquery 我正在尝试将表格插入到当前插入符号位置的内容可编辑 div 中。我正在使用Tim Down 的 Rangy库来完成此操作。我正在使用以下 javascript 执行此操作。

以防万一它在这里有帮助的是 getFirstRange 函数。

我需要在放置此表的任何位置制作有效的 html。例如,如果插入符号位于链接中间,我会尝试避免使用以下 html。

我希望它看起来像这样。

0 投票
1 回答
620 浏览

javascript - 应用自定义样式时拆分 HTML 标签

当您使用 WYSIWYG 编辑器并选择文本并对其应用例如粗体字时,浏览器将使用<span style="font-weight:bold">标签包装所选内容(假设您已调用document.execCommand("useCSS", false)和/或document.execCommand("styleWithCSS", true))。现在,如果您选择其中的一个子集并再次应用粗体,它会将原始粗体标签拆分为如下内容

在我正在开发的产品中,我们支持一系列 WYSIWYG 功能,包括一些 execCommand 不直接支持的功能(例如添加文本级别(类)以同时应用字体系列和字体大小),以及我们遇到了嵌套标签的问题。有没有办法告诉浏览器从样式中删除当前范围并基本上关闭以前的标签并在内容之后打开新标签?

我没有立即在execCommand 参考中看到任何内容。

我们使用rangy 1.2.3取得了一些成功,但我不知道我是否缺少某些命令。

当您添加多种样式时,这会变得更加复杂,因为在上面的示例中添加粗体和斜体,然后在中间删除粗体将产生三个跨度,两个带有粗体和斜体文本,中间只有斜体。

目前,我们将编辑器的使用限制在 Chrome 上。

0 投票
1 回答
307 浏览

javascript - 将标记转换为选择范围

如何将 jQuery 选择中的一组标记范围转换为一组范围广泛的范围?

例如我有这个:

我想将文本转换为范围({}删除标记)。

我尝试使用这个:

但它的范围不正确。我认为该selectCharacters方法忽略了空格。

如果可能的话,我也不想使用TextRangeModule

0 投票
2 回答
692 浏览

javascript - 范围循环中的随机操作 DOM

我有一组范围,从以下tokensToRanges函数创建:

将标记转换为选择范围

现在我想遍历每个范围,并对它们应用一个动作。但是我收到一个错误:

未捕获的错误:范围错误:DOM 突变后范围不再有效 ([WrappedRange("foobar":6)])

现在我明白了为什么会出现错误,但我想知道如何遍历一组范围并操纵每个范围?

0 投票
0 回答
314 浏览

javascript - 将跨越多个节点的范围划分为多个范围

如何将范围拆分为多个节点的多个范围?

例如,我有一个用{and表示的范围}(标记实际上不在内容中):

我想将一个范围分成2个,每个在自己的节点中,例如:

0 投票
1 回答
298 浏览

javascript - 使 rangy CSSClassApplier 只切换一个元素,而不是一个类

无论如何/我怎样才能让 rangy 的 CSSClassApplier 只切换一个元素,而不是一个类。

我试过了:

但是是行不通的。

0 投票
1 回答
257 浏览

typeerror - 目的 has no method 'methodeX'

i get an error in chrome:

Uncaught TypeError: Object s1A has no method 'applyToSelection'

in Firefox(firebug) i get this:

TypeError: val.applyToSelection is not a function

i get an error in chrome:

Uncaught TypeError: Object s1A has no method 'applyToSelection'

in Firefox(firebug) i get this:

TypeError: val.applyToSelection is not a function

i use the rangy-core and the rangy-cssclassappliere

my Code:

if id do this:

it works fine. But i need it for an option field and i want to get the value


I suggest storing appliers in an object where each property name corresponds to an input value:

0 投票
2 回答
683 浏览

javascript - Etch.js 与 Backbone.Marionette.js 的集成

有没有人遇到过 Etch.js 在 Backbone.Marionette.js 应用程序中的集成?

我在绑定保存事件时遇到问题。这是我的木偶视图的代码:

在我的模板中,我有以下内容:

插件已正确加载,如果单击该字段,我可以看到 Etch 按钮栏,我可以编辑可编辑元素的内容,如果单击保存按钮,我实际上可以触发模型 save()方法。

问题是提交的模型是原始模型,没有我对该字段所做的编辑。我认为这是一个有约束力的问题,有什么想法吗?

预先感谢,一如既往。