首页 > 解决方案 > 如何在 TinyMce 的预代码块中保留跨度标签和类

问题描述

我正在尝试使用 TinyMce 存储一段代码。在编辑器中,当我插入它时,它看起来很完美,带有样式化内容的标签(跨度)。这里有一个简单的例子,切到不填满页面,如果你在 DOM 上检查它在编辑时的样子:

  <pre class="language-php" contenteditable="false">  
      <span class="token keyword">if</span> 
         <span class="token punctuation">(</span><span class="token variable">$media</span>
         <span class="token punctuation">)</span> <span class="token punctuation">{</span>        
       <span class="token punctuation">}</span>
   </pre>

问题是,一旦我保存在我的 SQL 数据库中,其中的跨度<pre>就会消失,我已经检查了发生这种情况的时刻,并且在保存到数据库中并在 php 中处理它之前。

然后是TinyMCE如何处理数据的问题,经过谷歌搜索我一直无法找到问题的解决方案。

我使用的是 TinyMCE 5.x,没有任何高级插件。

TLDR:我试图在<pre>标签中存储一个代码片段,一旦我将它插入到 TinyMCE 中,它看起来不错(感谢 spans with classes),并且它把 spans all arroud all characters,但是一旦我保存了内容,它就会吃掉所有 spans内预。

标签: javascriptphphtmltinymce

解决方案


好吧,对于任何和我有同样问题的人来说。

我的问题是我对它如何工作的理解是错误的,使语法与样式一起工作的小家伙是prismjs,所以我的问题没有答案,但我的问题有一个解决方案。

您不关心<pre><code>标签内的跨度,因为如果您稍后在显示内容的页面中实例化 prismjs,它将自动设置为来自 IDE 的代码。

我希望它可以帮助将来像我一样对问题采取错误方法的人。


推荐阅读