2014-01-10 73 views
0

我需要完全禁用CKEditor(4.2或4.3)中的有序和無序列表(<ul>,<ol>)的縮進,因爲我需要將HTML的一個非常有限的子集轉換爲另一種標記語言不支持縮進。禁用CKEditor縮進插件

我試過多種方法,但沒有任何運氣:

嘗試1:通過配置中刪除插件

config.removePlugins = 'indent,indentlist,indentblock';

我想這是不工作,因爲這些插件似乎是必需的 - 從網站構建CKEditor包時,您無法刪除它們。

通過FireBug控制檯查看時,這些插件仍然存在。甚至沒有一個自己的插件文件夾 - 看起來它們是內置於核心的。

嘗試2:覆蓋TAB鍵

我創建了一個新的插件disableTab是完全不執行任何操作(除了return true;上執行)。

插件被註冊爲TAB鍵的按鍵處理程序:

config.keystrokes = [ 
    [ 9, 'disableTab' ] // disable TAB key to avoid nesting! 
]; 

不幸的是,在一個列表(<li><ol>)的第一級壓片當插件無法正常工作。有趣的是,它在列表的第二級按下TAB(ol > li > ol > li)時有效,它不會在第二級以下產生更多的嵌套列表。我知道我的插件是肯定執行的,因爲我在我的插件中插入了一個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可以使用多種方法。

+0

見,如果這個工程:'editorInstace.on(「鑰匙」 ,函數(e){return e.data.keyCode!=== 9;});' – epascarello

回答

3

我只是檢查快速textarea的,它看起來像雖然indentlist是由list插件需要,如果您:

0)http://github.com/ckeditor/ckeditor-dev

下載CKEditor的來源10

1)取下

requires: 'indentlist', 

plugins/list/plugin.js

2)從dev/builder/build-config.js

3取出

indentlist: 1, 
indentblock: 1, 

)構建釋放封裝dev/builder/build.sh(在Windows上使用 「GIT中擊」 殼)

您會在dev/builder/release/ckeditor文件夾中找到您需要的發佈版本。

(這是相當罕見所需的插件是不是真的需要,但它是罕見的,以及一個不需要對列表縮進;-))

+0

非常感謝你爲這個小小的howto!在項目的後期階段(下一個主要版本),我們可能會做一個CKeditor的縮小定製版本。現在我會堅持禁用TAB鍵;-) – Kaii

1

試着改變你的代碼:

editor = CKEDITOR.replace('element_name'); 

editor.on('key', function(e) { 
var key = e.data.keyCode;  
if(key==9) { 
return false; 
} 

應該工作,只是改變「ELEMENT_NAME」到您正在使用的CKEditor替代

+0

不起作用。有趣的是,'editor.on('key',function(e){alert(「hi」); return false;}'除了TAB之外幾乎所有的鍵都讓我歡迎!好像TAB鍵不會觸發'on (「key」)'事件在我的Linux + Firefox + CKEditor設置中!那麼,我該如何改變它?;) – Kaii

+0

請看看我的問題更新 – Kaii

+0

上面的代碼成功地禁用了ckeditor中的tab按鈕,但我在Windows + Chrome + CKEditor 4.3.1設置。 – CyberGuru