·悄然 - 2026-5-6 08:16
·飞飞 - 2026-5-6 08:13
·悄然 - 2026-3-26 10:46
·飞飞 - 2026-3-21 10:00
·悄然 - 2026-3-21 10:00
·小白 - 2026-3-21 09:59
·飞飞 - 2026-3-20 14:21
·悄然 - 2026-3-16 16:58
·飞飞 - 2026-3-10 14:32
Squire 编辑器实现音视频的插入功能
开发一款符合现代浏览器标准所见即所得的Web在线编辑器是一件相当复杂、难度极大的工作,好在有各种库为我们提供便利,借助它们,在网页中嵌入自定义的WYSIWYG编辑器变得相对简单。众多此类JS库中,Squire值得关注。
Squire为处理邮件中的HTML而开发,它虽然亮丽,也因对标问题存在一定的局限性,例如插入 h1~h6 标题 API 都没有提供,处理音视频的 API 更没有。插入音视频是当代Web页的刚需,Squire 不提供相应的API,我们可以变通实现。
首先需要让 Square 支持音视频所见即所得的渲染,唯一的途径是修改源码,让音视频进入“白名单”,否则即使插入成功,也不能在编辑器中呈现出效果来。打开下载的 Squire 源码,找到 var allowedBlock = /.../ 的语句,这是一个正则表达式,我们只需在表达式的后面加入 |VIDEO|AUDIO 即可,改变后的语句如下:
var allowedBlock = /^(?:A(?:DDRESS|RTICLE|SIDE|UDIO)|BLOCKQUOTE|CAPTION|D(?:[DLT]|IV)|F(?:IGURE|IGCAPTION|OOTER)|H[1-6]|HEADER|L(?:ABEL|EGEND|I)|O(?:L|UTPUT)|P(?:RE)?|SECTION|T(?:ABLE|BODY|D|FOOT|H|HEAD|R)|COL(?:GROUP)?|UL|VIDEO|AUDIO)$/;
保存后,音、视频将可以在编辑器中正常渲染。
其次引入 Squire 库(假设修改后的源码已经上传到可用的空间):
<script src="https://638183.freep.cn/638183/web/js/squire.min.js"></script>
接着我们就可以编写插入音视频的相关代码了。下面是一个可插入音、视频到编辑器中的完整案例:
以上案例,createMediaCode() 函数本质上与 Squire 无关,它只是根据传参创建并媒体标签的HTML代码。核心在按钮的点击事件中,共两点:其一,使用 moveCursorToEnd API 处理待插入媒体的位置以防止前边的标签被覆盖,其二,使用 InsertHTML API 将 createMediaCode() 函数返回的结果(媒体标签代码)插入到当前输入光标所在处。
媒体标签可以插入,其它标签如果没有相应 API 或不合适使用的,也可以仿造本案例加以实现(我们自定义的函数 createMediaCode() 可以改个名称以便令其名副其实)。
前一篇: colgroup :表格列组元素
下一篇: 没有了
评论列表 [0条]

