2012-10-25 20 views
2

我對CKEditor頗爲新穎(2天前開始使用它),而且我仍在使用某種配置,比如從編輯器中刪除標記。CKEditor - 使用數據處理器刪除腳本標記

因此,例如,如果在源模式的用戶類型如下:

<script type="text/javascript">alert('hello');</script> 

我想將其刪除。

查看文檔,我發現這可以使用HTML過濾器來完成。我如此定義它,但它不起作用。

var editor = ev.editor; 
var dataProcessor = editor.dataProcessor; 
var htmlFilter = dataProcessor && dataProcessor.htmlFilter; 
htmlFilter.addRules(
    { 
     elements : 
      { 
      script : function(element) 
       { 
        alert('Found script :' + element.name); 
        element.remove(); 
       }, 
      img : function(element) 
       { 
        alert('Found script :' + element.name); 
        if (!element.attributes.alt) 
         element.attributes.alt = 'Cookingfactory'; 
        } 
       } 
      }); 

img部分運行良好,但不是腳本之一。我想我錯過了一些東西。它甚至不會顯示腳本的警報消息。

任何幫助將超過歡迎:O)

+0

看看這個:http://stackoverflow.com/questions/3391288/client-side-javascript-code-to-strip-bogus-html-from-ckeditor –

+0

安德烈,THX的努力幫幫我。不知道該鏈接應該如何幫助(也許我不明白所有),但你知道爲什麼我試過的解決方案不起作用嗎? –

+0

不,不知道htmlFilter。但是你想實現的是「在CKEditor中從源代碼剝離html標籤」;我發佈的鏈接是關於「從CKEditor剝離HTML」。接受的解決方案建議使用CKEditor的集成清理功能,無需自己構建一個...您是否嘗試過這種解決方案? –

回答

2

您可以使用此:

CKEDITOR.replace('editor1', { 
    on: { 
     pluginsLoaded: function(event) { 
     event.editor.dataProcessor.dataFilter.addRules({ 
      elements: { 
       script: function(element) { 
        return false; 
       } 
      } 
     }); 
     } 
    } 
}); 
+0

當你進入「Source」模式並添加腳本時,我厭倦了你的代碼標籤,然後返回到「設計」模式,腳本標籤不會被刪除。 腳本標籤應該在什麼時候被刪除? – sam360

0

正如我在CKEditor的4,我做了下一個

CKEDITOR.instances.editor1.config.protectedSource.push(/{.*\".*}/g); 

它將忽略smarty大括號中的引號

1

如果您使用的是CKEditor 4.1或更高版本,則可以使用Advanced Content Filter允許你想要的內容。

如果您使用的是CKEditor 4.4或更高版本,則有一種更簡單的方法。您可以使用Disallowed Content過濾不喜歡的內容。

config.disallowedContent = 'script';