我想将一个不可编辑的元素放入 TinyMCE 中,它本身可以像 <img> 一样被选择、剪切、粘贴和拖动,但它的内容不可编辑。
我用 Chrome 尝试了 <div contenteditable="false"> 。它不可编辑。但它也不能被选择或拖动。
有什么方法可以在内容可编辑区域中使复合元素(如 <div>)原子化,就像字符或图像一样。
我想将一个不可编辑的元素放入 TinyMCE 中,它本身可以像 <img> 一样被选择、剪切、粘贴和拖动,但它的内容不可编辑。
我用 Chrome 尝试了 <div contenteditable="false"> 。它不可编辑。但它也不能被选择或拖动。
有什么方法可以在内容可编辑区域中使复合元素(如 <div>)原子化,就像字符或图像一样。
一个技巧是使用 an,因为即使在一个区域input[type="button"]
中这些也是不可编辑的。contenteditable
<textarea>
<p>This is editible content.</p>
<input value="This is uneditable content." type="button" draggable="true" style="border: 0; background: transparent; padding: 0; margin: 0; font-family: inherit" />
</textarea>
<script>
tinyMCE.init({ mode: 'textareas' });
</script>
这并不完美,因为输入不能有子元素。
如果需要显示动态 HTML,可以将 HTML 渲染到画布元素(使用html2canvas或等效项),然后将背景图像设置为在画布上input[type="button"]
调用获得的字符串。getDataURL
(您还需要计算呈现的 HTML 的高度和宽度,并将input[type="button"]
高度和宽度设置为匹配。)
我发现维基百科新的所见即所得编辑器已经实现了这一点。页面底部相关主题的参考编号和表格是可拖动的。它们都是复合元素。
当鼠标悬停在设计为整体可拖动的元素上时,它会在其上放置一个不可拖动的不可编辑 <div> 作为保护器。单击保护器时,它会被透明的 <img> 替换。所以用户实际拖动的是<img>。用户放下 <img> 后,它会将原来在 <img> 下的元素移动到新位置。