富文本编辑器使用 ( 手动上传图片视频 动态插入到标签中 )

本文介绍了如何在Vue项目中安装并配置Quill富文本编辑器,包括添加自定义字体、字号,以及集成图片和视频上传功能。通过引入vue-quill-editor和quill-image-resize-module,实现了编辑器的全局和局部引入,并提供了详细的配置示例,包括自定义上传文件的方法和富文本编辑器的事件监听。此外,还展示了如何在模板中使用编辑器,并提供了相应的CSS样式来调整字体显示。

安装依赖

npm install vue-quill-editor -s
npm install quill-image-resize-module -s

然后全局引入

import VueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
Vue.use(VueQuillEditor)

在需要的组件中引入使用

import VueQuillEditor, {
   
    Quill } from 'vue-quill-editor'
import ImageResize from 'quill-image-resize-module'
Quill.register('modules/imageResize', ImageResize)

这里需要两个参数content/editorOption

content 是用户在文本框内输入的内容 生成的HTML标签
editorOption是富文本主体功能对象

组件中注册组件 ( 哪里需要哪里用 ) 上结构 ( 根据使用进行修改 )

<template>
  <div>
<!--    @blur="onEditorBlur($event)"-->
<!--    @focus="onEditorFocus($event)"-->
<!--    @ready="onEditorReady($event)"-->
    <quill-editor v-model="content"
                  ref="quill"
                  :options="editorOption"
                 >
    </quill-editor>
    <el-upload
        class="upload-demo"
        action="#"
        :http-request="uploadFile"
        :show-file-list="false"
        style="display:none"
        ref="upload"
    >
      <el-button id="imgInput" type="primary">点击上传</el-button>
    </el-upload>
    <div @click="getHtml" style="text-align: right;margin-top: 10px">
      <el-button size="mini" type="primary">确定</el-button>
    </div>
  </div>
</template>

<script>
import {
   
    Quill,quillEditor } from 'vue-quill-editor'
import ImageResizes from 'quill-image-resize-module'
// import quillConfig from './utils/quill-config'
//设置字体大小
let fontSizeStyle=Quill.import('attributors/style/size') //引入这个后会把样式写在style上
fontSizeStyle.whitelist=['12px','14px','16px','18px']
Quill.register(fontSizeStyle,true)

//设置字体样式
let Font = Quill.import('attributors/style/font') //引入这个后会把样式写在style上
let fonts = [false, 'SimSun', 'SimHei','Microsoft-YaHei','KaiTi','FangSong',
Vue 项目中使用富文本编辑器(如 TinyMCE)时,编辑器可能会在生成的 HTML 内容中自动插入 `<meta>` 标签,例如 `X-UA-Compatible` 或 `charset=utf-8`。这些标签通常是为了确保内容在不同浏览器中的兼容性而添加的。然而,如果这些标签被错误地插入到页面的 `<head>` 区域,可能会导致页面结构混乱或与现有元信息冲突。 若要禁用富文本编辑器自动插入 `<meta>` 标签,可以采取以下几种方式: ### 配置 TinyMCE 编辑器以避免插入 meta 标签 在初始化 TinyMCE 时,可以通过配置项 `setup` 或 `init_instance_callback` 来修改编辑器的默认行为。例如,可以使用 `postProcess` 回调函数在内容输出前移除 `<meta>` 标签: ```javascript import { Editor } from '@tinymce/tinymce-vue'; export default { components: { Editor }, data() { return { editorContent: '', editorConfig: { setup: (editor) => { editor.on('PostProcess', (e) => { e.content = e.content.replace(/<meta[^>]*>/gi, ''); }); } } }; } }; ``` 通过这种方式,可以在每次内容处理完成后自动移除 `<meta>` 标签,从而避免其被插入到页面结构中[^1]。 ### 使用内容过滤器处理输出内容 另一种方法是在内容从编辑器中提取后,手动进行处理,以过滤掉不需要的 `<meta>` 标签。可以使用 DOM 解析器来实现这一点: ```javascript function filterMetaTags(content) { const parser = new DOMParser(); const doc = parser.parseFromString(content, 'text/html'); const metaTags = doc.querySelectorAll('meta'); metaTags.forEach(tag => tag.remove()); return doc.body.innerHTML; } // 使用示例 const cleanContent = filterMetaTags(editorContent); ``` 此方法适用于需要对内容进行额外处理的情况,例如清理格式或应用额外的样式规则。 ### 禁用富文本编辑器的默认 HTML 模板 某些富文本编辑器允许配置默认的 HTML 模板,这可能包括 `<meta>` 标签。可以通过修改模板配置来移除这些标签: ```javascript editorConfig: { content_css: false, // 禁用默认的 CSS 文件 content_style: '', // 空内容样式 // 其他配置项... } ``` 通过调整这些设置,可以控制编辑器生成的内容是否包含额外的 `<meta>` 标签或其他默认样式信息。 ### 总结 上述方法可以帮助开发者在 Vue 项目中有效地禁用富文本编辑器自动插入 `<meta>` 标签的行为。通过合理配置编辑器或在内容输出前进行处理,可以确保生成的内容不会干扰页面的 `<head>` 结构。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值