问题标签 [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.
javascript - 替换 contenteditable div 中的 innerHTML
我需要在 contenteditable div 中实现数字高亮(将来我会添加更复杂的规则)。问题是当我使用 javascript 替换插入新内容时,DOM 更改和 contenteditable div 失去焦点。我需要的是专注于当前位置的插入符号的 div,这样用户就可以毫无问题地输入,而我的功能简单地突出显示数字。谷歌搜索我认为Rangy库是最好的解决方案。我有以下代码:
问题是在函数结束工作焦点回到 div 之后,但插入符号总是指向 div 开始,我可以在任何地方键入,除了 div 开始。以下还有console.log类型Rangy warning: Module SaveRestore: Marker element has been removed. Cannot restore selection.
请帮我实现这个功能。我对另一个解决方案持开放态度,而不仅仅是 rangy 库。谢谢!
http://jsfiddle.net/2rTA5/这是 jsfiddle,但它不能正常工作(当我在我的 div 中输入数字时没有任何反应),不知道可能是我(第一次通过 jsfiddle 发布代码)或资源不支持 contenteditable。UPD *我在stackoverflow上读到了类似的问题,但解决方案不适合我的情况:(
dom - 跨多个 TextNode 应用 CSS
我正在寻找一种将 CSS 类应用于 HTML 文档中的任意文本范围的方法。我正在使用 MooTools 和 rangy 库,如果只有一个 TextNode 需要处理,这样的东西就可以工作:
这给了我一个范围,然后我可以将 CSS 类应用到;但是,如果我在 TextArea 中有任何 HTML 标记,我现在有多个 TextNode,我需要设置一个范围,从一个开始,到另一个结束。我想如果我可以在 textArea 中获得所有 TextNode 的有序列表,我可以做到这一点,但我不确定如何(或是否)可以获得该列表。
javascript - 包含在 jquery 选择器中的 Rangey 范围
我正在围绕Rangy JavaScript 插件开发一个 JavaScript 包装器。我正在尝试做的事情:给定一个 jQuery 选择器和一个范围,检测该范围是否包含在选择器中。这是一个用户将阅读文档并能够对特定部分进行评论的空间。所以我有一个id="viewer"
包含文档的 div,并且我有一个按钮区域,可以在用户选择一些文本后执行操作。这是(损坏的)功能:
似乎selectionArea.has(range.startContainer)
返回了一个大小为 0 的数组。我尝试过像这样的包装:$(range.startContainer)
。有小费吗?
我为这个问题开发了一个解决方案。这假设您有一个 div 选择器并且您的内容没有任何 div:
jquery - Rangy & ContentEditable - 设置插入符号
我正在尝试最新版本的“rangy”jQuery 插件(1.2 beta),以在具有特定偏移量的 contenteditable DIV 中设置插入符号。
但是,它在 Firefox 中以一个奇怪的错误响应:安全错误”代码:“1000
这是有问题的代码:
调用 setStart 函数时代码失败。
谁能举一个正确使用rangy的例子吗?
jquery - 内部内容可编辑,替换
为 \r\n
为 \r\n
我有一个内容可编辑的 div。在此我插入一个<pre>some code</pre>
标签。此标签旨在允许用户输入格式化代码,类似于 SO。
我遇到的问题是 FF 正在插入<br>
标签来代替 \r\n,这在普通 Html 中是正确的,但在之前我实际上想要 \r\n。
我尝试将委托附加到父 contenteditable。但这不会触发嵌套的 dom 元素。所以
不开火。我也尝试过处理父 div 上的正常键位,并将 pre 标签中的所有 brs 替换为 \r\n。但这会弄乱插入符号并且很笨重。
有这样做的首选方法吗?
我可能不得不诉诸于剥离它们的服务器端,但我宁愿不这样做。
非常感谢
javascript - 当我只知道字符偏移时,如何创建范围对象?
所以我有一个包含文本块的 div,之前用户在这个块中选择了一些文本,我从这个选择中创建了一个范围对象。我存储了所选文本的起点和终点的偏移量,但我在重新创建范围时遇到了问题(所以我可以操纵它)。"quotables" 是包含所有文本的 div。我不知道我做错了什么。
但我不断收到错误:未捕获错误:NOT_FOUND_ERR:DOM Exception 8
m.setStart
(anonymous function)
d.extend._Deferred.f.resolveWith
ddextend.ready
dcaddEventListener.y
jquery - Rangy - IE 中的 Range.setStartAfter
我对 IE 中的这个问题束手无策。我有一个 contenteditable 属性设置为“true”的元素。里面有各种元素,其中一些无法更改,使用 CSS 类名称“不可编辑”的跨度包装的文本。
使用“keydown”事件的处理程序,检查选择的anchorNode。如果anchorNode 是不可编辑元素的文本节点,则更改范围并设置为在不可编辑元素节点之后开始。这在所有浏览器中都能完美运行,除了被称为 IE 的可恶。
举个例子:
如果插入符号位于不可编辑元素的末尾,则按下的任何字符键都应添加到下一个文本节点的开头。但在 IE 中,文本被添加到不可编辑元素的末尾。
这是处理程序:
即使我选择下一个兄弟并使用 range.setStart(nextSibling, 0),IE 仍然会在不可编辑元素内添加新文本。如何防止 IE 编辑我不可编辑的元素?
任何帮助将不胜感激。
javascript - Contenteditable DIV - 如何确定光标是在内容的开头还是结尾
我有一个 contenteditable div,其中包含典型的所见即所得编辑器 html(粗体、锚点、列表)。
我需要确定当前光标是否位于 div 的开头和结尾处,onKeyDown。这样做的原因是,根据光标位置和按下的键,我可能想将此 div 与退格上的前一个 div 合并,或者在输入时创建一个新的以下 div。
我一直在摆弄范围,但是当您在元素中使用 html 时,事情变得非常复杂。
我希望我必须忽略一些简单的解决方案。
有没有一种相对简单的方法来确定这一点 - 我愿意使用像 Rangy 这样的库。
谢谢!
编辑:我在想一些事情:
我会遇到这样的奇怪问题吗?
html - 使用 rangy.cssClassApplier 将类应用于字符串
我如何使用rangy.cssClassApplier
将类应用于字符串?谢谢