javascript – 如何在TinyMCE textarea中设置初始文本?

我处于一个好奇的情况,我以前没有任何问题来实现我正在寻找的东西.以下代码HTML页面的一部分,用于托管TinyMCE丰富的文本框:
...
<textarea id="editing_field">This text is supposed to appear in the rich textBox</textarea>
...

起初,这是按照意图进行的,创建一个包含文本的富文本框.在某些时候,TinyMCE代码决定将textarea HTML转换为以下内容

<textarea id="editing_field" style="display: none;"/>
This text is supposed to appear in the rich textBox

这将使文本框下方的文本不完全理想.我不知道是什么导致这种行为的变化,虽然我也使用jQuery与它,如果这可以有任何影响.

我可以通过在页面加载后将内容加载到文本框中来解决问题,通过使用ajax或通过在HTML中隐藏文本,并将其移动.但是,如果可能,我想直接从PHP发送文本到文本框中.任何人都知道这里发生了什么,如何解决

更新2:我已经成功地转载了导致行为变化的情况:起初我刚刚在第一个代码片段中的textarea中有纯文本.但是,保存内容后,文本将如下所示:

<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,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"
    });

解决方法

如果您不调用tinyMCE的JavaScript函数,则可能需要处理浏览器兼容性问题.

如果您在页面上只有一个锡纸盒,您可以这样做:

tinyMCE.activeEditor.setContent('<span>some</span>');

您也可以设置BBCode等格式.查看setContent文档.

我会让您的PHP代码将HTML转换为JavaScript函数,并使用onload进行调用

function loadTinyMCE($html) {
    echo "
        <script type="text/javascript">function loadDefaultTinyMCEContent(){
             tinyMCE.activeEditor.setContent('$html');
        }</script>
    ";
}

然后

<body onload="loadDefaultTinyMCEContent()">

如果您不想使用页面onload事件,则tinymce具有名为oninit的init选项,功能类似.

或者,setupcontent_callback可以直接访问iframe.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...