tinymce - TinyMCE 在编辑器中的特定内容上禁用工具栏按钮
问题描述
我已经为特定的 div 配置了 TinyMCE。但是,在这个 div 中,有一些子内容是不可编辑的。考虑以下 HTML:
<div class="editor">
<p> Hello World </p>
<p> This is a test </p>
<div class="special-div">
<p> Hello test </p>
</div>
</div>
我已经这样设置了 TinyMCE:
tinymce.init({
selector: ".editor",
inline: true,
toolbar: ["formatselect | bold italic | alignleft aligncenter alignright | bullist numlist"]
})
在这种情况下,我希望当用户单击 时.special-div
,工具栏按钮被禁用。
我尝试过使用以下selector
参数:
selector: ".editor :not(.special-div)"
但是它不起作用。我还发现有一个参数叫editor_deselector
,但这仅适用于 TinyMCE v3,我使用的是 v4。我发现可以通过使用内部 TinyMCE api 来做到这一点,例如将每个按钮设置为禁用状态,但我想知道是否可以开箱即用。
主要关注的是工具栏本身而不是内容,mceNonEditable
甚至contentEditable="false"
可以阻止 TinyMCE 对其应用任何内容。这更像是一个用户体验问题,因为我不希望人们认为他们可以格式化.special-div
.
如果无法禁用它们,有没有办法在我选择时隐藏工具栏.special-div
?
解决方案
var ctrlmanager;
editor.onNodeChange.add(function (editor, controlManager, node) {
ctrlmanager = controlManager;
controlManager.setDisabled('lngQuoteList_Uk', (node.nodeName == 'TD' || $(node).parents('TD').length > 0) || (node.className == 'del cts-1' && node.nodeName == 'SPAN'));
});
推荐阅读
- javascript - 如何将半圆形甜甜圈图居中?
- java - Java 在运行时更新字段而无需反射
- java - 为什么尝试运行java时说-jar是非法参数?
- javascript - 将样式表应用于使用 atob 生成的 html 文件
- r - 如何使用R将具有相同日期的多条记录替换为一条记录
- powershell - 如何运行 IoTCorePShell.cmd
- java - Collections.Sort() 的行为;
- tensorflow - 在 while 循环中评估 TensorArray 时出错
- python - 比较日期并找到最接近当前日期的日期
- python - 尝试将 rsa 密钥(元组)插入 sql 数据库时出错