gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:34:33 27 4
gpt4 key购买 nike

我处于一种奇怪的情况,我以前可以毫无问题地实现我正在寻找的东西。以下代码是托管 TinyMCE 富文本框的 HTML 页面的一部分:

...
<textarea id="editing_field">This text is supposed to appear in the rich textbox</textarea>
...

起初这按预期工作,创建了一个带有封闭文本的富文本框。不过,在某些时候,TinyMCE 代码决定将文本区域 HTML 转换为以下内容:

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

最佳答案

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

如果你的页面只有一个tinymce框,你可以这样做:

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 的初始化选项。功能类似。

或者,setupcontent_callback让您可以直接访问 iframe。

关于javascript - 如何在 TinyMCE textarea 中设置初始文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/488189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com