Я в любопытной ситуации, когда у меня раньше не было проблем с достижением того, что я ищу. Следующий код является частью HTML-страницы, на которой размещается текстовое поле с поддержкой TinyMCE:
...
<textarea id="editing_field">This text is supposed to appear in the rich textbox</textarea>
...
Сначала это работало по назначению, создавая в нем богатый текстовый ящик с вложенным текстом. Однако в какой-то момент код TinyMCE решил, что HTML-код textarea должен быть преобразован в следующее:
<textarea id="editing_field" style="display: none;"/>
This text is supposed to appear in the rich textbox
Это отображает текст под текстовым полем, который не является идеальным. Я не знаю, что вызвало это изменение поведения, хотя я также использую jQuery вместе с ним, если это может иметь какой-то эффект.
Я могу обойти проблему, загрузив содержимое в текстовое поле с помощью javascript после загрузки страницы, либо используя ajax, либо скрыв текст в HTML и просто переместив его. Тем не менее, я хотел бы выпустить текст в текстовое поле непосредственно из PHP, если это вообще возможно. Кто-нибудь знает, что здесь происходит и как это исправить?
Обновление 2: Я успешно воспроизвел ситуацию, которая вызывает изменение поведения. Сначала у меня был простой текст в текстовом поле, как в первом фрагменте кода. Однако после сохранения содержимого текст будет выглядеть следующим образом:
<p>This text is supposed to appear in the rich textbox</p>
Наличие тега p
заставляет TinyMCE запускать преобразование между охватывающей текстовой областью в текстовое поле, которое является всего лишь одним тегом (как показано выше).
Обновление 1: добавлено конфигурационный файл TinyMCE:
tinyMCE.init({
// General options
mode : "exact",
elements : "editing_field",
theme : "advanced",
skin : "o2k7",
skin_variant : "black",
plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
save_onsavecallback : "saveContent",
// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull",
theme_advanced_buttons2 : "search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,forecolor,backcolor",
theme_advanced_buttons3 : "hr,removeformat,|,sub,sup,|,charmap,emotions,|,print,|,fullscreen,code",
theme_advanced_buttons4 : "styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : false,
// Drop lists for link/image/media/template dialogs
template_external_list_url : "lists/template_list.js",
external_link_list_url : "lists/link_list.js",
external_image_list_url : "lists/image_list.js",
media_external_list_url : "lists/media_list.js",
// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234"
},
width : "450",
height : "500"
});