我可以成功保存字符<和>。
我使用以下选项执行此操作:
entities : """
cleanup : false
verify_html : false
到目前为止没有任何问题。
但是,每当我在该文本之间放置任何内容时,它都会转换为标记:
<xxx>
转换为
<xxx></xxx>
如何阻止?我正在尝试将示例HTML输入到TinyMCE中,以便我可以记录一些XML。我必须有一种标准的做法。
答案 0 :(得分:1)
这听起来很像你没有编码&lt;和&gt;字符正确。 TinyMCE是一个HTML编辑器,它编辑的内容被浏览器解析,所以没有转义&lt;和&gt;根据浏览器对格式错误的HTML的处理,内容可能会产生意外结果。
请注意,根据您加载HTML的方式进行编辑,浏览器可能会在实体到达TinyMCE之前对其进行一次解码,在这种情况下,您必须对实体进行双重编码以使其安全加载。
此致
Adrian Sutton
http://tinymce.ephox.com
答案 1 :(得分:0)
我基本上详细阐述了ajsutton的答案,这是解决问题的起点。
你必须逃避&lt;和&gt;两次,因为浏览器会将从服务器获取的数据取消一次,然后再将其交给TinyMCE。
假设您要打开一个TinyMCE WYSIWYG文本阵列,显示&#34;粗体的HTML标记是&lt; B&gt;。不存在的HTML标记是&lt; NONSENSE&gt;。&#34;
假设服务器发送以下页面源:
<script language="javascript" type="text/javascript">
tinyMCE.init({
selector : "textarea.myMCE",
...
});
</script>
...
<TEXTAREA NAME="TEST" class="myMCE" ROWS="25" COLS="80">
The HTML tag for boldface is <CODE><B>.</CODE>
A nonexistent HTML tag is <CODE><NONSENSE>.</CODE>
</TEXTAREA>
这会失败。浏览器(在我的情况下是firefox)在将源发送到TinyMCE之前对源进行一次解码;你可以通过删除&#34; class = myMCE&#34;来看到这个。标记,所以你得到一个简单的html文本阵列,其中包含以下内容:
The HTML tag for boldface is <CODE><B>.</CODE>
A nonexistent HTML tag is <CODE><NONSENSE>.</CODE>
如果TinyMCE(在我的情况下为4)获取此数据,并且您查看&#34;工具&#34;:&#34;源代码&#34;你可以看到:
The HTML tag for boldface is <CODE><B>.</CODE>
A nonexistent HTML tag is <CODE>.</CODE>
TinyMCE已禁止无效的html标记&#34;&lt; NONSENSE&gt;&#34;。 TinyMCE文本阵列中呈现的文本将如下所示:
粗体的HTML标记是。不存在的HTML标记。
请注意第一个&#34;。&#34;现在很大胆!
服务器应发送的正确html源是:
<TEXTAREA NAME="TEST" class="myMCE" ROWS="25" COLS="80">
The HTML tag for boldface is <CODE>&lt;B&gt;.</CODE>
A nonexistent HTML tag is <CODE>&lt;NONSENSE&gt;.</CODE>
</TEXTAREA>
,即所有&#34;&amp;&#34;被&#34;&amp; amp;&#34;取代在文本阵列的内容中。
如何实现这一点取决于您用于cgi脚本的编程语言。在php中,str_replace(&#34;&amp;&#34;,&#34;&amp; amp;&#34;,$ textarrea_contents)应该可以正常工作。