文章目录
一、音频1、自定义内容2、引入使用
二、视频1、自定义内容2、引入使用
三、文本添加行内style样式(文本边框)1、不带有下拉框(1)自定义内容(2)引入使用
2、带有下拉框(1)自定义内容(2)引入使用
四、段落添加行内style样式(首行缩进)1、不带有下拉框(1)自定义内容(2)引入使用(见文本添加,类同)
2、带有下拉框(1)自定义内容(2)引入使用
一、音频
1、自定义内容
import { Quill } from 'vue-quill-editor';
const BlockEmbed = Quill.import('blots/block/embed');
// 音频
class AudioBlot extends BlockEmbed {
static create(value) {
console.log(value)
const node = super.create(value);
node.setAttribute('src', value.url);
node.setAttribute('controls', true);
node.setAttribute('name', value.name);
node.setAttribute('controlsList', 'nodownload');
return node;
}
// 添加value获取当前的audio元素。拿到audio元素的属性。
static value(domNode) {
const value = {
url: '',
name: '',
};
// 这里要加判断。不然会显示undefined
if (domNode.getAttribute('src')) {
value.url = domNode.getAttribute('src');
value.name = domNode.getAttribute('name');
}
console.log(value)
return value;
}
}
AudioBlot.blotName = 'audio';
AudioBlot.tagName = 'audio';
export default { AudioBlot};
2、引入使用
引入
import blotsInfo from '../utils/audio-blot'
Quill.register(blotsInfo.AudioBlot);
将选择好的文件地址插入到编辑器中
const quill = this.$refs.myQuillEditor.quill;
// insertEmbed(index: Number(插入的位置), type: String(标签类型), value: any(参数,将传入到create的方法中去), source: String = 'api')
quill.insertEmbed(this.curCursor, 'audio', { url: this.currentMaterial });
二、视频
1、自定义内容
import { Quill } from 'vue-quill-editor';
const BlockEmbed = Quill.import('blots/block/embed');
// 视频
class VideoBlot extends BlockEmbed {
static create(value) {
let node = super.create(value);
node.setAttribute('src', value.url || value); //设置audio的src属性
node.setAttribute('controls', true); //设置audio的controls,否则他将不会显示
node.setAttribute('controlsList', 'nodownload'); //设置audio的下载功能为不能下载
node.setAttribute('id', 'videoAuto'); //设置一个id
node.setAttribute('style', 'width:100%'); //设置一个id
//外层套入div (不套入会产生无法删除乱起八糟的问题)
let divNode = document.createElement("span");
divNode.appendChild(node)
if (!value.url) {
divNode.innerHTML = divNode.innerHTML.replace('
发表评论