国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue2 實現(xiàn)內容拖拽或添加 HTML 到 Tinymce 富文本編輯器的高級功能詳解

這篇具有很好參考價值的文章主要介紹了Vue2 實現(xiàn)內容拖拽或添加 HTML 到 Tinymce 富文本編輯器的高級功能詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在 Web 開發(fā)中,Tinymce 被廣泛應用作為富文本編輯器。除了基礎的文本編輯功能,Tinymce 還提供了一系列高級功能,使得文本編輯更加靈活和便捷。本文將介紹如何在 Tinymce 中實現(xiàn)一些高級功能,并深入了解每個工具的使用。

Tinymce 簡介

Tinymce 是一款基于 JavaScript 的富文本編輯器,支持豐富的插件和工具,可通過簡單的集成和配置實現(xiàn)高度的定制化。它為開發(fā)者提供了一套豐富的 API,使得文本編輯變得更加輕松。其開放性和可擴展性使其成為眾多開發(fā)者首選的富文本編輯解決方案之一。

效果展示

Vue2 實現(xiàn)內容拖拽或添加 HTML 到 Tinymce 富文本編輯器的高級功能詳解,vue,javaScript,html,前端,javascript,vue.js,編輯器,tinymce

實現(xiàn)功能詳解

1. 實現(xiàn)點擊外部按鈕,將內容添加到富文本內

通過 Vue2 和 Tinymce 6x 版本,我們可以通過精心配置和處理事件,實現(xiàn)點擊外部按鈕時,將指定內容添加到富文本編輯器內。這一功能旨在為用戶提供更直觀和高效的文本編輯體驗。

代碼示例:

// 在 Vue 組件中處理按鈕點擊事件,將內容插入富文本編輯器
appendContentInTinymce() {
  let html = `<span style="color:red;">我是點擊后到富文本的內容。</span>`;
  this.editor.insertContent(html);
}

2. 實現(xiàn)拖動外部按鈕,將內容添加到富文本內

借助拖拽功能,用戶可以將指定內容從外部按鈕拖動到富文本編輯器中。這種直觀的操作方式提高了用戶的操作效率。

代碼示例:

// 在 Vue 組件中處理拖拽事件,將拖動的內容插入富文本編輯器
onDragStart(event) {
  let html = `
    <table style="border-collapse: collapse;width: 80%;margin-left: 20%;" border="1">
      <tbody>
        <tr>
          <td colspan="3" style="width: 100%;">
            <div style="color:blue;text-align:center;">我是被拖進來的</div>
          </td>
        </tr>
        <tr>
          <td style="width: 33.3333%;"></td>
          <td style="width: 33.3333%;"></td>
          <td style="width: 33.3333%;"></td>
        </tr>
        <tr>
          <td style="width: 33.3333%;"></td>
          <td style="width: 33.3333%;"></td>
          <td style="width: 33.3333%;"></td>
        </tr>
      </tbody>
    </table>
  `;
  event.dataTransfer.setData("text/html", html);
}

3. 實現(xiàn)拖動外部按鈕,將一個整體添加到富文本內

通過對整塊內容的拖拽,我們不僅可以實現(xiàn)單個元素的拖動,還可以將一整塊內容作為一個整體拖動到富文本中。這為用戶提供了更靈活的編輯方式。

代碼示例:

// 在 Vue 組件中處理拖拽事件,將整體內容插入富文本編輯器
onDragStartMceNonEditable(event) {
  let html = `<span style="color:green;" class="mceNonEditable">我是被拖進來的,我是一塊整體。</span>`;
  event.dataTransfer.setData("text/html", html);
}

版本介紹

使用vue2 版本和tinymce 6x 版本

"@tinymce/tinymce-vue": "^3",
"core-js": "^3.8.3",
"tinymce": "^6.8.2",
"vue": "^2.6.14"

tinymce 6x 和?tinymce 5x版本代碼寫法不同

具體代碼展示

<template>
  <div>
    <div class="buttons">
      <button @click="toggleEditorReadOnly">編輯器開關</button>
      <button class="my-custom-button">點擊我不會觸發(fā)blur事件</button>
      <button @click="appendContentInTinymce">你可以點擊我到富文本</button>
      <button draggable="true" @dragstart="(event) => onDragStart(event)">
        你可以拖動我到富文本
      </button>
      <button
        draggable="true"
        @dragstart="(event) => onDragStartMceNonEditable(event)"
      >
        你可以拖動我到富文本,我的內容是一塊整體
      </button>
    </div>
    <textarea ref="tinymce" :id="textareaId"></textarea>
  </div>
</template>

<script>
import tinymce from "tinymce/tinymce";
import "tinymce/themes/silver";

export default {
  props: {
    value: String,
    options: Object,
  },
  data() {
    return {
      textareaId: `tinymce-${Math.random().toString(36).substring(7)}`,
      editor: null,
    };
  },
  mounted() {
    this.initializeEditor();
  },
  watch: {
    value(newValue) {
      if (newValue !== this.editor.getContent()) {
        this.editor.setContent(newValue);
      }
    },
  },
  methods: {
    initializeEditor() {
      const defaultOptions = {
        /**
         * 插件
         * autoresize 可以根據(jù)內容自動調整編輯器的高度
         * code 顯示TinyMCE編輯區(qū)的原始html
         * lists,advlist 高級列表插件,擴展了默認的UL (bullist) 和OL (numlist)列表樣式.另外該插件也提供了自定義的選項advlist_bullet_styles, advlist_number_styles
         * codesample 代碼示例插件,擴展codesample_languages
         * directionality 將文本放到左邊或右邊ltr rtl
         * image 圖像插件
         * editimage 編輯圖像插件 要收費
         * emoticons 表情庫
         * export 導出pdf插件 要收費
         * formatpainter 格式刷 要收費
         * fullscreen 全屏插件
         * help 幫助
         * insertdatetime 插入日期
         * link 鏈接
         * media 該插件為用戶提供了將 HTML5 視頻和音頻元素添加到可編輯區(qū)域的能力
         * nonbreaking 插入不間斷空格實體
         * pagebreak 使用戶能夠在可編輯區(qū)域插入分頁符
         * preview 預覽
         * save 保存
         * searchreplace 搜索和替換插件
         * template 模板插件.即將到來的 TinyMCE 7.0 版本中完全刪除。作為替代解決方案,我們建議使用 Advanced Template Premium 插件
         * visualblocks 該插件允許用戶在可編輯區(qū)域中查看塊級元素
         * wordcount 字數(shù)統(tǒng)計
         */
        plugins:
          "autoresize code codesample  lists advlist accordion table fullscreen anchor directionality emoticons help image insertdatetime media nonbreaking pagebreak preview save searchreplace visualblocks wordcount",
        autoresize_overflow_padding: 0,

        /**
         * 工具欄
         * undo 撤銷
         * redo 重做
         * bold 加粗
         * italic 斜體
         * alignleft aligncenter alignright alignjustify 文本對齊
         * outdent 減小當前段落或列表項的縮進級別
         * indent 增加當前段落或列表項的縮進級別
         * lineheight 行高的下拉列表
         * code 顯示TinyMCE的html
         * bullist 創(chuàng)建或移除無序列表
         * numlist 創(chuàng)建或移除有序列表
         * backcolor 將背景色應用于選區(qū)
         * blocks 標題列表
         * copy 復制到剪切板
         * copy 將當前所選內容剪切到剪貼板中
         * fontfamily 字體系列的下拉列表
         * fontsize 字體大小的下拉列表
         * fontsizeinput 輸入字段提供增大和減小字體大小按鈕
         * forecolor 修改文本顏色
         * h1-h6 文本標題
         * hr 插入水平線
         * newdocument 創(chuàng)建一個新文檔
         * pastetext 打開/關閉純文本粘貼模式
         * print 打印當前編輯器內容
         * remove 移除(刪除)所選內容或光標位置之前的內容
         * removeformat 從當前選定內容中刪除格式
         * selectall 選擇編輯器中的所有內容
         * strikethrough 將刪除線格式應用于當前選區(qū)
         * styles 所選內容的樣式的下拉列表
         * subscript 將下標格式應用于當前選定內容
         * superscript 將上標格式應用于當前選定內容
         * underline 將下劃線格式應用于當前選定內容
         * undo 撤消上一個操作
         * visualaid 切換不可見元素的視覺輔助工具
         */
        toolbar:
          "undo redo | bold italic | alignleft aligncenter alignright alignjustify | outdent indent lineheight accordion| bullist numlist backcolor forecolor blocks fontfamily styles fontsize fontsizeinput h1 h2 h3 h4 h5 h6 | copy cut newdocument pastetext print remove  selectall code codesample  | hr strikethrough subscript superscript underline removeformat visualaid | table tableinsertdialog tablecellprops tableprops  fullscreen anchor ltr rtl emoticons help image media insertdatetime link nonbreaking pagebreak preview save searchreplace visualblocks wordcount",
        autoresize_bottom_margin: 16, // 自動調整高度的底部邊距
        height: 500, // 編輯器高度
        min_height: 500, // 最小編輯器高度
        placeholder: "請輸入...", // 占位符
        // advlist_bullet_styles: "square", // 無序列表是否使用方形
        advlist_number_styles:
          "lower-alpha,lower-roman,upper-alpha,upper-roman", // 小寫字母,小寫羅馬數(shù)字,大寫字母,大寫羅馬數(shù)字
        auto_focus: true, // 讓編輯器加載完成后自動獲得光標焦點
        cache_suffix: Math.random().toString(36).substring(7), // 可在TinyMCE加載js和css文件時,在URL請求后面自動加上指定的后綴,多用于解決緩存問題。
        // content_security_policy: "default-src 'self'",//內容安全策略.僅允許當前域名,不包括子域名
        // external_plugins: {
        //   // 引入站外插件.可用于引入本站外部提供的插件,TinyMCE將根據(jù)插件加載規(guī)則加載指定URL的插件。當從CDN加載TinyMCE或希望TinyMCE主目錄與自定義插件分開時,可使用此配置。
        //   testing: "http://www.testing.com/plugin.min.js",
        //   maths: "http://www.maths.com/plugin.min.js",
        // },
        readonly: false, // 是否只讀模式
        // suffix: '.min', // 后綴。如果主程序叫tinymce.js,它在加載插件時就會去找插件文件夾里的plugin.js;如果主程序叫tinymce.min.js,它在加載插件時就會去找plugin.min.js。
        // target: el, // 使用Node替代selector
        custom_ui_selector: ".my-custom-button", // 可指定某些元素成為編輯器的一部分,當焦點移動到此選擇器匹配的元素上時,不會觸發(fā)編輯器的blur事件
        highlight_on_focus: true, // 獲得輸入焦點時,編輯器添加藍色輪廓
        toolbar_mode: "wrap", // 不會被折疊隱藏
        codesample_languages: [
          { text: "HTML/XML", value: "markup" },
          { text: "JavaScript", value: "javascript" },
          { text: "CSS", value: "css" },
          { text: "PHP", value: "php" },
          { text: "Ruby", value: "ruby" },
          { text: "Python", value: "python" },
          { text: "Java", value: "java" },
          { text: "C", value: "c" },
          { text: "C#", value: "csharp" },
          { text: "C++", value: "cpp" },
        ],
        extended_valid_elements:
          "script[src],span[class|style|title],table[class|style]", // 給元素添加有效屬性
        save_onsavecallback: () => {
          console.log("Saved");
        },
        // 初始化前執(zhí)行
        setup: (editor) => {
          this.editor = editor;

          editor.on("change", () => {
            this.$emit("input", editor.getContent());
          });

          editor.on("blur", () => {
            console.log("觸發(fā)了 blur");
          });

          editor.on("dragover", function (event) {
            console.log("dragover");
            event.preventDefault();
          });

          editor.on("drop", function (event) {
            console.log("drop");
            event.preventDefault();
            var htmlContent = event.dataTransfer.getData("text/html");
            editor.insertContent(htmlContent);
          });
        },
        // 初始化結束后執(zhí)行
        init_instance_callback: function (editor) {
          console.log("ID為: " + editor.id + " 的編輯器已初始化完成.");
        },
      };

      tinymce.init({
        ...defaultOptions,
        ...this.options,
        selector: `#${this.textareaId}`,
      });
    },
    toggleEditorReadOnly() {
      const editor = tinymce.get(this.textareaId); // 替換為你的編輯器 ID
      const status = editor.mode.get();

      if (status === "design") {
        editor.mode.set("readonly"); // 設為設計模式,允許編輯
      } else {
        editor.mode.set("design"); // 設為只讀模式
      }
    },
    appendContentInTinymce() {
      let html = `<span style="color:red;">我是點擊后到富文本的。</span>`;
      this.editor.insertContent(html);
    },
    onDragStart(event) {
      let html = `
      <table style="border-collapse: collapse;width: 80%;margin-left: 20%;" border="1">
        <tbody>
          <tr>
            <td colspan="3" style="width: 100%;">
              <div style="color:blue;text-align:center;">我是被拖進來的</div>
            </td>
          </tr>
          <tr>
            <td style="width: 33.3333%;"></td>
            <td style="width: 33.3333%;"></td>
            <td style="width: 33.3333%;"></td>
          </tr>
          <tr>
            <td style="width: 33.3333%;"></td>
            <td style="width: 33.3333%;"></td>
            <td style="width: 33.3333%;"></td>
          </tr>
        </tbody>
      </table>
    `;
      event.dataTransfer.setData("text/html", html);
    },
    onDragStartMceNonEditable(event) {
      let html = `<span style="color:green;" class="mceNonEditable">我是被拖進來的,我是一塊整體。</span>`;
      event.dataTransfer.setData("text/html", html);
    },
  },
  beforeDestroy() {
    if (this.editor) {
      this.editor.destroy();
    }
  },
};
</script>
<style scoped>
.buttons {
  padding-bottom: 30px;
}
button {
  margin-left: 15px;
  cursor: pointer;
}
</style>

總結

Tinymce 提供了豐富的插件和工具,使得富文本編輯更加靈活。通過探索這些高級功能,我們可以根據(jù)項目需求實現(xiàn)定制化的文本編輯器,提升用戶體驗。

通過本文的介紹,相信你對 Tinymce 的高級功能有了更深入的了解。在實際項目中,結合具體需求,靈活運用這些功能,將為你的文本編輯帶來更多可能性。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-778973.html

到了這里,關于Vue2 實現(xiàn)內容拖拽或添加 HTML 到 Tinymce 富文本編輯器的高級功能詳解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • vue2使用 tinymce富文本編輯器-圖片上傳、粘貼圖片上傳致服務器

    1.安裝tinymce富文本編輯器插件 npm i tinymce npm i @tinymce/tinymce-vue 2.創(chuàng)建Editor.js文件 封裝組件 以便使用 3.漢化包 (我放在public/tynymce/langs文件夾里) 4.vue組件中使用 本次記錄重點在于 上傳圖片方法 需要區(qū)分工具欄中圖片上傳方法 以及 粘貼進去的圖片也需要走上傳方法。兩個方

    2024年02月09日
    瀏覽(97)
  • vue2.0實現(xiàn)富文本編輯及文本內容展示

    vue2.0實現(xiàn)富文本編輯及文本內容展示

    1,下載富文本插件 2,可以直接在頁面進行引入,也可以全局掛載,(只展示頁面引入) 3,頁面使用 4,頁面展示效果為 ?5,到這一步如果頁面需要把所發(fā)送的富文本內容展示到前端,可以直接讓后端把傳過去的內容原封不動的返回到前端(以下為演示) 演示發(fā)送,像后端

    2024年02月13日
    瀏覽(23)
  • vue中使用Base64轉碼(Tinymce富文本保留HTML標簽)

    vue中使用Base64轉碼(Tinymce富文本保留HTML標簽)

    在vue項目中,我們經常使用到富文本編輯器,例如博主的項目(見上圖),這里需要把富文本內的HTML結構,發(fā)放到Android端做混合應用的開發(fā),因此HTML結構必不可少的! 但是瀏覽器在向服務器發(fā)送數(shù)據(jù)時,有可能出現(xiàn)不識別前端發(fā)送的特殊字符,或者直接丟棄特殊字符,此時

    2024年02月15日
    瀏覽(26)
  • vue2和vue3拖拽移動div

    直接上代碼,代碼可以直接運行, vue2拖拽移動div: vue3拖拽移動div: 設置div居中后,發(fā)現(xiàn)一開始拖拽時,div會跑到最左邊,vue3優(yōu)化代碼如下:

    2024年02月07日
    瀏覽(22)
  • Vue2輕松實現(xiàn)HTML導出高質量PDF,告別繁瑣操作

    Vue2輕松實現(xiàn)HTML導出高質量PDF,告別繁瑣操作

    在前端開發(fā)中,我們常常需要將網頁內容以PDF格式進行導出。例如,企業(yè)需要將報告以PDF文件的形式保存并分享給客戶;學校需要將學生的作業(yè)打包成PDF文件進行提交等。在Vue2中,我們可以通過一些簡單的步驟來實現(xiàn)HTML導出PDF功能。 目錄 一、使用jsPDF庫 二、實現(xiàn)導出PDF的方

    2024年02月10日
    瀏覽(27)
  • tinymce4/5實現(xiàn)將word中內容(文字圖片等)直接粘貼至編輯器中——利用插件tinymce-powerpaste-plugin

    tinymce4/5實現(xiàn)將word中內容(文字圖片等)直接粘貼至編輯器中——利用插件tinymce-powerpaste-plugin

    TinyMCE是一款易用、且功能強大的所見即所得的富文本編輯器。同類程序有:UEditor、Kindeditor、Simditor、CKEditor、wangEditor、Suneditor、froala等等。 TinyMCE的優(yōu)勢: 開源可商用,基于LGPL2.1 插件豐富,自帶插件基本涵蓋日常所需功能(示例看下面的Demo-2) 接口豐富,可擴展性強,有

    2024年02月15日
    瀏覽(29)
  • vue2 實現(xiàn)后臺管理系統(tǒng)左側菜單聯(lián)動實現(xiàn) tab根據(jù)路由切換聯(lián)動內容,并支持移動端框架

    vue2 實現(xiàn)后臺管理系統(tǒng)左側菜單聯(lián)動實現(xiàn) tab根據(jù)路由切換聯(lián)動內容,并支持移動端框架

    效果圖: pc端 ?移動端 ? ?由于代碼比較多,我這里就不一一介紹了,可以去我的git上把項目拉下來 git地址https://gitee.com/Flechazo7/htglck.git 后臺我是用node寫的有需要的可以評論聯(lián)系

    2024年02月16日
    瀏覽(26)
  • html5播放器禁止拖拽功能實例(教學內容禁止拖動觀看)

    html5播放器禁止拖拽功能實例(教學內容禁止拖動觀看)

    html5播放器禁止拖拽功能實例(常用于場景:企業(yè)培訓、在線教學內容禁止學員拖動視頻進行觀看) 實例1:參數(shù)開啟后,視頻教學內容或視頻課件將不允許拖動進度條。 代碼參數(shù)提示: ban_seek string off 設置為 on 播放器將會徹底禁止拖拽 ? 實例2:?禁止記住播放進度 ? 禁止

    2024年02月01日
    瀏覽(106)
  • vue2 element ui 的表格使用 sortablejs 拖拽列遇到的問題和解決方案

    項目使用?element ui 的表格實現(xiàn)拖動表頭可改變列的寬度,又使用sortablejs實現(xiàn)表格的列可拖拽到其他列的位置,導致出現(xiàn)如下的一些問題: 1、某一列寬變大或變小后,只有當前列可拖拽,其他列無法拖拽。 解決方案:在列寬發(fā)生改變后,銷毀當前拖拽實例,再重新創(chuàng)建拖拽

    2024年02月08日
    瀏覽(19)
  • vue 集成tinymce2實現(xiàn)圖片,視頻以及文件的上傳

    vue 集成tinymce2實現(xiàn)圖片,視頻以及文件的上傳

    1. 安裝插件 (1)安裝tinymce npm install tinymce -S (2)安裝tinymce-vue npm install @tinymce/tinymce-vue@3.0.1 -S 2. 復制靜態(tài)文件到 public 目錄 資源下載路徑:https://download.csdn.net/download/weixin_44021888/88063970?spm=1001.2014.3001.5503 3. 新建組件:tinymce 注意:如果上傳過后的視頻,只有一張圖片的占位

    2024年02月16日
    瀏覽(59)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包