contentEditable是一个HTML属性(由Microsoft发明并在HTML5中标准化),用于客户端浏览器内“富文本”编辑。
在“contenteditable”div中的光标位置插入元素
在我的项目中,我试图用“contenteditable = true”将插入元素包装在一个div中。这个想法是用户可以随时在 div 中插入这个元素,包括在中间...
我有一个 Vue 3 组件,其中包含一个内容可编辑的 div,我正在使用 v-for 循环向其中动态添加子元素。我需要确定当前关注的是哪个子元素,所以...
在 react 的内容可编辑的 div 中插入插入符号的 HTML
我们如何使用 React 将 span 标签添加到光标所在的 div 中的最后一个位置,该 div 的 contentEditable 属性已设置为 true(package react-contenteditable)?这个 div 只包含 pl ...
我正在使用 dnd-kit/core 并且无法通过编辑按钮使我的 UserComponent 可编辑。我不认为我写的编辑按钮可能与 dnd-kit 兼容(因为它不起作用)?一个...
如何使用 javascript 从可竞争的 div 元素中动态读取文本?
单击 p 按钮到上面的 div 中,将附加一个段落,如下所示。 const newParagraph = document.querySelector('.paragraph'); newParagraph.addEventListener("点击", ()...
contenteditable inside div是主要的
当我在其中放置一个 div contenteditable 时,我希望用户编写的第一件事是创建一个基本且未删除的 div,并且文本在 div 中 我不喜欢这个 : 我喜欢这个 : 甚至...
我有一个内容可编辑的 div,该 div 有一些内容: Lorem ipsum dolor sit ... 我有一个div是contenteditable并且那个div有一些内容: <div contenteditable="true" id="editable-div"> <p id="paragraph"> Lorem <em>ipsum</em> dolor sit <strong id="stong-el">amet</strong> <p> </div> 我想拦截keydown事件并找到用户试图写入的元素。 听content editable div时已经找不到具体元素了: const div = document.getElementById('editable-div'); div.addEventListener('keydown', event => { /* ??? */ }, false); 问题:回调中的事件并没有告诉我写入了哪个元素,它只告诉我我已经写入了#editable-div 我的另一个尝试是监听嵌套事件,像这样: // either const el = document.getElementById('paragraph'); // or const el = document.getElementById('stong-el'); el.addEventListener('keydown', event => { /* ??? */ }, false); 问题是事件永远不会触发。显然,该事件仅在具有 contenteditable 属性的元素上触发,这很糟糕。 我最后的办法是听#editable-div并检查哪个元素有文本选择,但如果有任何其他方式我宁愿不这样做。 更新 我发现的另一种方法是在可编辑元素上使用MutationObserver,像这样: const observer = new MutationObserver(mutations => { mutations.forEach(function(mutation) { console.log(mutation.target); }); }); const config = { characterData: true, subtree: true }; const div = document.getElementById('editable-div'); observer.observe(div, config); 这记录了我编辑的文本元素。 我不确定我的问题是否得到了回答,因为最后我想做两件事: 捕获并阻止更新内部数据结构的事件 从数据结构中渲染 React 组件 这似乎不是一个合适的解决方案。 您可以将 keydown 事件附加到文档的正文中。然后在 keydown 事件上,使用 document.activeElement 返回当前具有焦点并将接收键盘输入的元素。 这里是解释 document.activeElement 的链接(https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement) 您可以将侦听器放在 contenteditable 元素上,然后通过比较其新文本与旧文本来检查更新了哪个元素。并且取决于您可以在相应的分支中执行您的操作。 检查这个代码块- <div id="ce" contenteditable="true"> <strong id="s">Abc</strong><br/> <i id="i">Hello</i> </div> <script> oldstext = document.getElementById('s').textContent; olditext = document.getElementById('i').textContent; document.getElementById('ce').addEventListener('keydown', event => { //alert("ce Edited"); if(oldstext != document.getElementById('s').textContent){ console.log(oldstext + " v/s " + document.getElementById('s').textContent); oldstext = document.getElementById('s').textContent; } else if (olditext != document.getElementById('i').textContent){ console.log(olditext + " v/s " + document.getElementById('i').textContent); olditext = document.getElementById('i').textContent; } }, false); </script> 您可以查看当前文本选择的anchorNode来获取发生keydown事件的DOM节点: const div = document.getElementById('editable-div'); div.addEventListener('keydown', event => { console.log(window.getSelection()?.anchorNode); }, false); https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection
我有一个按钮元素,它需要有可以动态修改的文本。我在添加空格时遇到了麻烦,当时我引用这个答案有一个跨度,这是 contentedit ...
我在下面有可编辑的内容和一个 onbeforeinput 事件侦听器和函数。使用 lit.js 我想在到达 dom 之前获取段落或 h1 元素。所以我可以得到它的高度和宽度...
是否可以在将 contentEditable 属性设置为 true 的元素上禁用拖放功能。我有以下HTML页面。
我需要以编程方式模拟用户输入到一个内容丰富的HTML元素中的交互。我不能使用诸如 element.onkeypress()或 element.fire()之类的东西。我不能修改...
在链接内的可内容块,如何防止重定向,但让文本选择的位置发生变化?
这里是演示:http:/jsfiddle.netqh7Sq我想能够编辑span里面的链接,其实我可以通过部分防止冒泡传播的块状小节变化的动作。请不要建议...
感觉自己快疯了--似乎过不了这个坎。输入任何文本后,我们立即失去焦点。调用ref上的focus()似乎完全没有效果。UpdatePage.js导出...
使用contentEditable div而不是textarea的缺点是什么?
如果我用一个属性为contenteEditable="true "的div作为文本字段而不是textarea,会不会给自己带来麻烦?
div contentEditable与非contentEditable子代不能删除。
我对可满足的行为感到非常困惑,因为有时是工作,有时不是。在这个例子中是不工作的。当我删除所有的工作.textarea{ min-height: 100px; } ... ...
codeBlock包裹在<pre>中,在按下Enter键时,在可内容的断点处。
在我的自定义编辑器中,将代码封装在了
我使用一个内容可编辑的元素。这是可编辑的。 和document.getElementById('myinput').innerHTML来读取它的内容。
Javascript: Span contentEditable as input (Placeholder Alternative)
我需要当用户删除(span id "ps")中的内容时,显示span id "lps_inner"。作为输入占位符的替代,我需要使用javascript来实现这一点。...
我很惊讶我遇到了麻烦,无法找到答案。我正在尝试从contenteditable的开始到用户的光标/插入符号使contenteditable中的文本。这是一个...
光标位置不在Microsoft Edge的cotenedit div中占位符的开头
可压缩div上的光标不是占位符的开始,但是它在chrome和firefox中可以正常工作。 div是自动聚焦的,光标必须从初始显示。 html