2010-09-08 3 views
2

Нашего сайта, используя тег, как < # тэгу #> но CKEditor преобразует < и> в & ЛТ и & GT, который нарушает эти тег для использования в нашем программном обеспечении.CKEditor: Как остановить угольники от преобразования в HTML сущности

Я обнаружил эту опцию: config.protectedSource.push (/ < # [\ s \ S] * ##>/g); который, кажется, останавливает преобразование, если данные сохраняются из исходного режима, но в режиме WYSIWYG я не могу найти способ остановить преобразование. Я пробовал много вариантов в их API, но ни один из них, похоже, не помог, как я могу исправить эту проблему?

ответ

0

Если вы наберете < или> в любом редакторе WYSIWYG, они будут преобразованы в их объекты HTML в исходном режиме.

+0

Я остановил HTML сущности от преобразования в режиме источника, я хочу это так, когда данные сохраняются за пределами исходного режима не будет преобразовывать сущности. Раньше мы использовали EDITLET, и он не конвертировался, отправленный в режиме WYSIWYG. – Sam

2

Были изучены возможности использования CKEDitor для редактирования шаблонов Smarty. Проблема, с которой мы сталкивались, заключалась в том, что она заменяла все угловые скобки и амперсанды в фигурных скобках, что все испортило. Это произошло в поиске Google, поэтому наше решение должно помочь любому, у кого есть подобные проблемы.

CKEditor восстанавливает HTML каждый раз, когда вы переключаетесь в режим Source и при его сохранении, поэтому вам нужно добавить HTML-код http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Data_Processor htmlFilter.

Это работало на нас:

//replace Form_content with whatever your editor's id is. 
    htmlParser = CKEDITOR.instances.Form_content.dataProcessor.htmlFilter; 

      //We don't want HTML encoding on smarty tags 
      //so we need to change things in curly brackets 
      htmlParser.onText = function(text) { 
        //find all bits in curly brackets      
        var matches = text.match(/\{([^}]+)\}/g); 

        //go through each match and replace the encoded characters 
        if (matches!=null) { 
         for (match in matches) {  

          var replacedString=matches[match]; 
          replacedString = matches[match].replace(/&gt;/g,'>'); 
          replacedString = replacedString.replace(/&lt;/g,'<'); 
          replacedString = replacedString.replace(/&amp;/g,'&'); 

          text = text.replace(matches[match],replacedString); 
          } 
        } 

        return text; 

      } 

Функция КОНТЕКСТ обрабатывает все биты, которые не в тегах или комментарии.

Я бы предположил, что вы можете сделать что-то подобное, изменив код выше - я оставил его так, как я думаю, наши проблемы и требуемые решения очень похожи.

Смежные вопросы