我使用的是最新/当前的TinyMCE编辑器(<script type="text/javascript" src='https://cdn.tinymce.com/4/tinymce.min.js'></script>
),它似乎无法显示<svg>
。我在一个包含一些<svg>
的数据库中保存了一些HTML。在TinyMCE中加载时,它不会显示。
这是一个已知的问题(我已经搜索过,但没有发现多少)?有什么解决办法吗?
发布于 2016-10-04 03:21:32
TinyMCE剥离空的和无效的标记。你可以通过
发布于 2018-02-20 03:14:56
我尝试了Koen的第一个建议,它适用于现有的SVG内容(我在setup
回调中添加了这一点)。但是,当将HTML粘贴到源代码编辑器并确认对话框时,它仍然过滤掉SVG标记。
在深入了解TinyMCE的源代码以查看这些元素实际被删除的位置(在DomParser
类中)之后,我发现了一个Schema
类的无文档编辑器设置,它指定了允许空而不被删除的标记。唯一令人讨厌的是,您不能使用它添加到现有的列表,您只能覆盖它。因此,在设置它时,您必须列出默认情况下它在其中的标记。在初始化TinyMCE时,请在提供给它的设置中使用此方法:
// First the list of tags that it normally knows about by default:
non_empty_elements: "td,th,iframe,video,audio,object,script,pre,code,area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,source,wbr,track"
// Now we add tags related to SVGs that it doesn't normally know about:
+ "svg,defs,pattern,desc,metadata,g,mask,path,line,marker,rect,circle,ellipse,polygon,polyline,linearGradient,radialGradient,stop,image,view,text,textPath,title,tspan,glyph,symbol,switch,use",
这样,这些SVG标记就不应该被过滤掉,因为它们是空的--只要它们在一般情况下也是有效的,例如,按照Koen的建议设置extended_valid_elements
,或者允许所有元素(不推荐,因为它使您容易受到XSS攻击):
extended_valid_elements: "*[*]"
请注意,这对于我的4.5.8版本的TinyMCE是有效的。由于此设置是无文档化的,因此它在当前或未来版本中可能不再工作。此外,它们可能调整了我在以后版本中重写的默认列表。在源代码中查找nonEmptyElementsMap
和shortEndedElementsMap
,以在您的版本中找到默认列表(这两个列表合并了),并注意,在那里,标记是用空格分隔的,但是当您自己提供列表时,列表是用逗号分隔的(不管出于什么原因)。
发布于 2016-06-20 01:51:05
因为它是一个空标记而被TinyMCE删除的接缝:http://world.episerver.com/forum/developer-forum/-EPiServer-75-CMS/Thread-Container/2015/1/tinymce-and-svgs/
您的可能会在init中使用:
extended_valid_elements : "svg[*]",
它与其他空标签等一起工作,但从未尝试过使用SVG。
从我链接到的论坛帖子:
好的,我在TinyMCE中做了一些调试,问题似乎是svg元素被检测为空,并被删除。 不幸的是,没有配置方式来改变这种行为,但是有一些解决办法。
<svg name="something"
<svg data-mce-something="something"
。<svg> </svg>
,使用这些技术,我可以成功地将内联svg存储在xhtml属性中https://stackoverflow.com/questions/37862695
复制相似问题