Javascript 禁用编辑器缩进插件
我需要在CKEditor(4.2或4.3)中完全禁用有序和无序列表(Javascript 禁用编辑器缩进插件,javascript,ckeditor,Javascript,Ckeditor,我需要在CKEditor(4.2或4.3)中完全禁用有序和无序列表(,)的缩进,因为我需要将HTML(非常有限的子集)转换为另一种不支持缩进的标记语言 我尝试过几种方法,但没有任何运气: 尝试1:通过配置删除插件 config.removePlugins='indent,indentlist,indentblock' 我想这是行不通的,因为这些插件似乎是必需的——在从网站构建CKEditor包时,您不能删除它们 通过FireBug控制台查看CKEDITOR.plugins时,这些插件仍然存在。甚
,
)的缩进,因为我需要将HTML(非常有限的子集)转换为另一种不支持缩进的标记语言
我尝试过几种方法,但没有任何运气:
尝试1:通过配置删除插件
config.removePlugins='indent,indentlist,indentblock'代码>
我想这是行不通的,因为这些插件似乎是必需的——在从网站构建CKEditor包时,您不能删除它们
通过FireBug控制台查看CKEDITOR.plugins
时,这些插件仍然存在。甚至不存在自己的插件文件夹-似乎它们是内置到核心的
尝试2:覆盖选项卡键
我创建了一个新插件disableTab
,它完全不做任何事情(除了执行时返回true;
)
插件已注册为TAB键击键的处理程序:
config.keystrokes = [
[ 9, 'disableTab' ] // disable TAB key to avoid nesting!
];
editor.on('key', function(e) { alert ("hi"); return false; });
不幸的是,当按下列表第一级的tab键(
或
)时,插件无法工作。有趣的是,当在列表的第二级(ol>li>ol>li
)中按TAB键时,它会起作用,但在第二级以下不会生成更多嵌套列表。我确信我的插件已经执行,因为我在插件中插入了一个alert()
,用于测试。至少,我的Firefox就是这样
但我需要完全禁用缩进,而不仅仅是在level>2以上
在编辑器配置中尝试3:通过blockedKeystrokes
阻止击键:
不起作用,即使根据文档,它应该:
config.blockedKeystrokes = [ 9 ];
尝试4:在运行时删除击键
根据API文档,此代码应禁用击键,但由于某些原因无法工作:
for (instance in CKEDITOR.instances) {
var editor = CKEDITOR.instances[instance];
editor.setKeystroke(9, false);
}
知道如何删除CKEditor中列表的缩进吗?
我不明白为什么这些方法都不起作用。如果你知道原因,请告诉我
更新:
有趣的是,除了按TAB键外,几乎每一个按键事件都会出现此代码:
config.keystrokes = [
[ 9, 'disableTab' ] // disable TAB key to avoid nesting!
];
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。尝试将代码更改为:
editor = CKEDITOR.replace( 'element_name' );
editor.on('key', function(e) {
var key = e.data.keyCode;
if(key==9) {
return false;
}
这样应该可以,只需将“element_name”更改为要用ckeditor替换的文本区域,然后尝试将代码更改为:
editor = CKEDITOR.replace( 'element_name' );
editor.on('key', function(e) {
var key = e.data.keyCode;
if(key==9) {
return false;
}
这应该行得通,只需将“element_name”更改为您要用ckeditor替换的文本区域,我刚刚快速检查了一下,它看起来像是列表插件需要缩进列表,如果您:
0)从下载CKEditor源
1) 除去
从plugins/list/plugin.js
2) 除去
从dev/builder/build config.js
3) 使用dev/builder/Build.sh
构建发布包(在Windows上使用“Git Bash”shell)
您将在dev/builder/release/ckeditor
文件夹中找到所需的发布版本
(一个必需的插件不是真正必需的,这很少见,但是一个不需要列表缩进的插件也很少见;-)我刚刚快速地检查了一下,看起来虽然indentlist
是列表
插件所必需的,如果您:
0)从下载CKEditor源
1) 除去
从plugins/list/plugin.js
2) 除去
从dev/builder/build config.js
3) 使用dev/builder/Build.sh
构建发布包(在Windows上使用“Git Bash”shell)
您将在dev/builder/release/ckeditor
文件夹中找到所需的发布版本
(一个必需的插件不是真正必需的,这很少见,但列表不需要缩进也很少见;-)内置的缩进列表插件在处理事件时取消冒泡,因此不会触发tab键的标准事件侦听器。如果将事件的优先级设置为首先运行,则可以捕获tab键事件并阻止它缩进列表
例:
如果只想阻止编号列表上的缩进,可以添加以下条件:
editor.on('key', function (evt) {
var path = editor.elementPath();
if (editor.mode != 'wysiwyg') {
return false;
}
if (evt.data.keyCode == this.indentKey || evt.data.keyCode == 9 && path.contains('ol')) {
evt.cancel();
return false;
}
}, null, null, 1);
此处的文档中概述了事件优先级:内置的indentlist插件在处理事件时取消事件冒泡,因此不会触发tab键的标准事件侦听器。如果将事件的优先级设置为首先运行,则可以捕获tab键事件并阻止它缩进列表
例:
如果只想阻止编号列表上的缩进,可以添加以下条件:
editor.on('key', function (evt) {
var path = editor.elementPath();
if (editor.mode != 'wysiwyg') {
return false;
}
if (evt.data.keyCode == this.indentKey || evt.data.keyCode == 9 && path.contains('ol')) {
evt.cancel();
return false;
}
}, null, null, 1);
此处的文档中概述了事件优先级:查看此操作是否有效:editorInstace.on(“key”,function(e){return e.data.keyCode!==9;})代码>查看是否有效:editorInstace.on(“key”,函数(e){returne e.data.keyCode!==9;})代码>不起作用。有趣的是,editor.on('key',function(e){alert(“hi”);return false;}
向我问候除了TAB之外的几乎所有键!在我的Linux+Firefox+CKEditor设置中,TAB键似乎没有触发on('key”)
事件!那么,我该如何更改它呢?;)上面的代码成功地禁用了我在CKEditor中的TAB按钮,但我使用的是Windows+Chrome+CKEditor 4.3.1安装程序。已确认。适用于Chromium(Linux)和IE(Windows)。是与Firefox相关的问题。不起作用。有趣的是,editor.on('key',function(e){alert(“hi”);return false;}
向我问候几乎所有的键,除了TAB!