Javascript 如何在TinyMCE文本区域中设置初始文本?
我处于一个奇怪的境地,我以前在实现我想要的目标方面没有任何问题。以下代码是HTML页面的一部分,该页面将承载TinyMCE富文本框:Javascript 如何在TinyMCE文本区域中设置初始文本?,javascript,tinymce,textarea,Javascript,Tinymce,Textarea,我处于一个奇怪的境地,我以前在实现我想要的目标方面没有任何问题。以下代码是HTML页面的一部分,该页面将承载TinyMCE富文本框: ... <textarea id="editing_field">This text is supposed to appear in the rich textbox</textarea> ... 第二个例子是空标记符号。如果你想把文字放在舞台上,你需要像第一种方式一样 什么是输出textarea标记?您可以调试它以查看它是否正在执行空
...
<textarea id="editing_field">This text is supposed to appear in the rich textbox</textarea>
...
第二个例子是空标记符号。如果你想把文字放在舞台上,你需要像第一种方式一样
什么是输出textarea标记?您可以调试它以查看它是否正在执行空标记表示法吗
Eric如果不调用tinyMCE的JavaScript函数,可能需要处理浏览器兼容性问题 如果页面上只有一个tinymce框,则可以执行以下操作:
tinyMCE.activeEditor.setContent('<span>some</span>');
然后
如果您不想使用pageonload
事件,tinymce有一个名为init的选项,其功能类似
或者,允许您直接访问iframe。似乎我已经解决了问题,除非存在破坏解决方案的任何边缘情况。在将页面内容保存到数据库之前,我对页面内容使用以下PHP代码:
$content = str_replace(chr(10), "", $content);
$content = str_replace(chr(13), "", $content);
$content = str_ireplace('<','​<',$content);
$content=str_replace(chr(10),“”,$content);
$content=str_replace(chr(13),“”,$content);
$content=str_ireplace('鉴于
标记的存在导致了转换,我怀疑您的HTML最终看起来像:
...
<textarea id="editing_field"><p>This text is supposed to appear in the rich textbox</p></textarea>
...
。。。
此文本应显示在富文本框中
...
不幸的是,技术上不允许在
标记中使用HTML元素,因此可能有人将
标记视为新块元素的开始,隐式关闭文本区域。要解决此问题,可以对尖括号进行编码:
...
<textarea id="editing_field"><p>This text is supposed to appear in the rich textbox</p></textarea>
...
。。。
p此文本应显示在富文本框/p中
...
使用PHP,可以在将值回显到页面之前通过htmlspecialchars()
发送值来完成此操作。要更改特定的tinyMCE字段,可以执行以下操作:
tinyMCE.get('editing_field').setContent('your default text');
我在使用React时遇到了同样的问题,可能与此有关。传递给组件的初始值是原始值。一旦接收到,组件将接管并处理内容,而不管是否传递了新值。因此,如果传递字符串,则它是一个常量,并且在初始渲染时存在但如果传递变量,则变量的初始值可能与要显示的值不同(例如,在收到要显示的值之前,它可能为null或未定义)。在我的例子中,我接收到一个包含页面内容的对象,其中一个是要显示为初始内容的html。但render方法首先是用空对象激发的,然后是带有数据的实际对象。在tinyMCE.init中设置-
init_instance_callback: function (editor) {
AFunction();
}
function AFunction(){
//your code here
tinyMCE.get('youtinytextareaname').setContent("your text here");
}
问题是TinyMCE代码将原始textarea修改为单个闭合标记。第一个代码段是我编写的代码,第二个代码段是TinyMCE修改后的代码。您有一些优点,但我仍然希望完全避免使用javascript。我认为唯一可能的方法是如果有人可以这样做了解如何使TinyMCE不将两个textarea标记合并为一个。只有在TinyMCE已初始化的情况下,它才起作用。但当您初始化TinyMCE,然后在下一行中设置值时,它将不起作用。因为初始化TinyMCE大约需要0.5秒(可能是).Textarea是否在元素中?在您的情况下,它没有在setContent中设置默认文本,我们应该需要html类型的文本,例如:tinyMCE.get('editing_field').setContent('p>此处的某些文本');
$content = str_replace(chr(10), "", $content);
$content = str_replace(chr(13), "", $content);
$content = str_ireplace('<','​<',$content);
...
<textarea id="editing_field"><p>This text is supposed to appear in the rich textbox</p></textarea>
...
...
<textarea id="editing_field"><p>This text is supposed to appear in the rich textbox</p></textarea>
...
tinyMCE.get('editing_field').setContent('your default text');
init_instance_callback: function (editor) {
AFunction();
}
function AFunction(){
//your code here
tinyMCE.get('youtinytextareaname').setContent("your text here");
}