微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

原文地址:https://www.jb51.cc/js/152767.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐