Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在TinyMCE文本区域中设置初始文本?_Javascript_Tinymce_Textarea - Fatal编程技术网

Javascript 如何在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标记?您可以调试它以查看它是否正在执行空

我处于一个奇怪的境地,我以前在实现我想要的目标方面没有任何问题。以下代码是HTML页面的一部分,该页面将承载TinyMCE富文本框:

...
<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>');
然后


如果您不想使用page
onload
事件,tinymce有一个名为init的选项,其功能类似


或者,允许您直接访问iframe。

似乎我已经解决了问题,除非存在破坏解决方案的任何边缘情况。在将页面内容保存到数据库之前,我对页面内容使用以下PHP代码:

$content = str_replace(chr(10), "", $content);
$content = str_replace(chr(13), "", $content);
$content = str_ireplace('<','&#x200B;<',$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">&lt;p&gt;This text is supposed to appear in the rich textbox&lt;/p&gt;</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('<','&#x200B;<',$content);
...
<textarea id="editing_field"><p>This text is supposed to appear in the rich textbox</p></textarea>
...
...
<textarea id="editing_field">&lt;p&gt;This text is supposed to appear in the rich textbox&lt;/p&gt;</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");
}