Czy jest możliwe utworzenie bloku kodu w CKEditorze, który nie zostanie dotknięty przez samego edytora, i będzie utrzymywany w zamierzonym stanie, dopóki nie zostanie jawnie zmieniony przez użytkownika? Próbowałem wprowadzić zmienne javascript (związane tagami skryptu) i film flash, ale CKEditor kontynuuje przepisywanie wklejonego kodu/znaczników, a przy tym łamie mój kod.Zachowywanie znaczników SCRIPT (i innych) w CKEditor
Pracuję z następującej konfiguracji:
<script type="text/javascript">
var editor = CKEDITOR.replace("content", {
height : "500px",
width : "680px",
resize_maxWidth : "680px",
resize_minWidth : "680px",
toolbar :
[
['Source','-','Save','Preview'],
['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
['Link','Unlink','Anchor'],
['Image','Table','HorizontalRule','SpecialChar']
]
});
CKFinder.SetupCKEditor(editor, "<?php print url::base(); ?>assets/ckfinder");
</script>
Przypuszczam najbardziej idealnym rozwiązaniem byłoby, aby zachować zawartość dowolnego znacznika, który zawiera class="preserve"
umożliwiając znacznie więcej niż ograniczonych wyłączność.
Aktualizacja: myślę, że rozwiązanie tego problemu jest w CKEDITOR.config.protectedSource()
, ale moje doświadczenie wyrażeń regularnych okazuje się być zbyt młodzieńcze się obsługiwać ten problem. W jaki sposób chciałbym zwolnić wszystkie znaczniki zawierające "zachowane" klasy od dotknięcia przez CKEditor?
nie wiesz, co budujesz ... ale jeśli ten edytor akceptuje tagi skryptów i emituje je w wynikach z powrotem do strony, całkowicie narażasz swoją witrynę na ataki XSS (Cross Site Scripting). – scunliffe
scunliffe, Dokładnie to jest. Ale dzieje się to w ramach części administracyjnej strony. Użytkownicy nie będą uzyskiwać dostępu do tej strony. Nie martwię się o problem bezpieczeństwa. Tylko administrator będzie miał dostęp. – Sampson