CKEDITOR.instance[x].setData не работает в IE

#javascript #jquery #ckeditor

#javascript #jquery #ckeditor

Вопрос:

Хорошо, я использую CKEditor в веб-приложении. Одна вещь, которую мне нужно сделать, это установить текст в текстовой области. Я использовал строку:

 CKEDITOR.instances.setData(html);
  

…где html — переменная, содержащая HTML.

Это отлично работает в Chrome и Firefox, но совсем не в Internet Explorer или Safari.

Может кто-нибудь дать представление о том, почему, или предложить обходной путь?

Заранее большое спасибо! 🙂

Комментарии:

1. Поправка к моему вопросу; это работает в Safari — просто не IE…

2. Этот код (‘CKEDITOR.instances.setData (html); ‘) должен завершиться ошибкой во всех браузерах, потому что вы не указываете экземпляр, который хотите использовать. Как только это исправлено, оно должно работать точно так же, если вы не пытаетесь использовать неправильную строку html, которая не может быть проанализирована IE

Ответ №1:

Убедитесь, что из строки, которую вы передаете, удалены все новые строки setData(). , если вы этого не сделаете, выдается исключение с сообщением о незавершенной строке. Символы новой строки, используемые CKEditor в UNIX-стиле n (другими словами, не версия DOS: rn ).

Новая строка, по-видимому, отключает синтаксический анализатор, заставляя его думать, что это конец инструкции.

Также обратите внимание, что если вы вызываете getData() , чтобы получить это значение, которое вы только что установили снова, CKEditor в него возвращаются разрывы строк и табуляции. Вам нужно будет удалить их снова, если вам нужно вернуть это значение, используя setData(). я использую шаблон регулярного выражения, подобный этому, чтобы удалить новые строки (и вкладки только для полноты):

 [nt] 
  

Также убедитесь, что если вы используете регулярное выражение для их удаления, вам нужно убедиться, что сопоставление с шаблоном будет соответствовать n символу (в .NET это называется «однострочный» режим, но я не знаю, что вы используете).