TinyMCE 去除 HTML 5 音频标签上的"controlsList"属性



在TinyMCE编辑器中,我想添加一个有效的元素属性,HTML5音频和视频属性"controlList"。这是一个实验属性,但在Chrome中支持,我们有它的用途。例如,我们希望在TinyMCE中验证以下代码:

<p>
<audio controls="controls" controlsList="nodownload">
<source src="some.mp3" type="audio/mpeg" />
Your browser does not support the audio element.
</audio>
</p>

现在"controlsList="nodownload"未被识别并被剥离。

tinyMCE的文档显示,使用tinyMCE init可以添加自定义标记和属性(https://www.tiny.cloud/docs/configure/content-filtering/#valid_elements)。然而,我已经研究了2sxc的来源,我不太清楚在2sxc实现TinyMCE时实现这一点的最佳方法。

一种可能性似乎是文件\dist\sxc-edit\sxc-edit.js(2sxc 9.14(的第2045行;属性到现有的validateAlo:

validateAlso: '@[class]' // allow classes on all elements, 
+ ',i' // allow i elements (allows icon-font tags like <i class="fa fa-...">)
+ ",hr[sxc|guid]" // experimental: allow inline content-blocks
+ ",audio[controlsList]"
+ ",video[controlsList]"

然而,这对我的测试服务器没有产生预期的效果,我不喜欢修改源代码的想法,因为我的更改将被我应用的下一个补丁覆盖。

做这件事的正确方法是什么?

这里有一个解决方案,可以将自定义属性添加到HTML标记中。请注意,此解决方案适用于我们对HTML5音频/视频标签的一次性需求,但可能不适用于所有人。

首先,我们在音频标签中添加了一个id"我的播放器"。

<audio id="my-player" controls="controls">
<source src="some.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>

然后,我们添加了一个脚本,使用DNN页面设置>高级>SEO>页面标题标签插入所需属性:

<script>
$( document ).ready(function() {
$('#my-player').attr("controlsList", "nodownload");
});
</script>

在我们的案例中,这种javascript属性插入具有所需的效果。

到目前为止,tinyMCE是不可配置的。原因是我们正在转向使用Angular 7的UI的全新实现,并且我们不想引入更多的功能来迁移:(

如果你真的想这样做,我建议你使用输入类型"string wysiwyg"的代码来创建你自己的代码——让我们称之为"string wysiswyg withfeatures",并将其注册为输入类型(有一些关于这一点的博客(——然后配置你的字段以使用该wysiwy格。

最新更新