【发布时间】:2014-01-10 21:21:16
【问题描述】:
我需要在 CKEditor(4.2 或 4.3)中完全禁用有序和无序列表(<ul>、<ol>)的缩进,因为我需要将(非常有限的)HTML 转换为另一种标记语言不支持缩进。
我尝试了几种方法,但都没有运气:
尝试 1:通过配置删除插件
config.removePlugins = 'indent,indentlist,indentblock';
我猜这不起作用,因为这些插件似乎是必需的 - 从网站构建 CKEditor 包时无法删除它们。
通过 FireBug 控制台查看 CKEDITOR.plugins 时,这些插件仍然存在。甚至不存在自己的插件文件夹 - 似乎它们是内置在核心中的。
尝试 2:覆盖 TAB 键
我创建了一个新插件disableTab,它完全不做任何事情(除了return true; 在执行时)。
插件注册为 TAB 键击键的处理程序:
config.keystrokes = [
[ 9, 'disableTab' ] // disable TAB key to avoid nesting!
];
不幸的是,当在列表的第一级(<li> 或 <ol>)上按 Tab 时,插件不起作用。有趣的是,当在列表的第二级 (ol > li > ol > li) 中按 TAB 时它可以工作,它不会在第二级以下生成更多的嵌套列表。我确定我的插件已执行,因为我在我的插件中插入了一个alert() 进行测试。至少,在我的 Firefox 中是这样的。
但我需要完全禁用缩进,不仅仅是高于 2 级。
尝试 3:在编辑器配置中通过 blockedKeystrokes 阻止击键:
不起作用,即使它应该根据文档:
config.blockedKeystrokes = [ 9 ];
尝试 4:在运行时移除击键
根据 API 文档,此代码应该禁用击键,但由于某种原因它不起作用:
for (instance in CKEDITOR.instances) {
var editor = CKEDITOR.instances[instance];
editor.setKeystroke(9, false);
}
知道如何在 CKEditor 中删除列表的缩进吗?
我不明白为什么这些方法都不起作用。如果您知道原因,请告诉我。
更新:
有趣的是,除了按 TAB 键之外,这段代码几乎在每个按键事件中都会向我打招呼:
editor.on('key', function(e) { alert ("hi"); return false; });
看来我的设置(LinuxMint 13 [Gnome 2] + Firefox 18 + CKEditor 4.2)没有触发 TAB 键的键事件处理程序。也许缩进插件使用其他事件?模糊?
更新 2:
这是一个 Firefox(可能仅限 linux)问题。有几种方法适用于 Chrome 或 Internet Explorer。
【问题讨论】:
-
看看这是否有效:
editorInstace.on("key", function (e) { return e.data.keyCode !=== 9; });
标签: javascript ckeditor