模態視窗(彈出框)整合CKEditor實戰

2021-07-28 17:55:52 字數 2785 閱讀 8154

需求背景:

電子合同專案下的合同模板新增頁面中是用layer.js實現的彈出框,也叫模態視窗,用之前的summernote文字編輯器不符合當前編輯合同文字內容的需求(1:字型大小2:字型顏色3:動態**4:字型加粗)。所以在第二個小版本中調研了ckeditor+ueditor,ueditor也能滿足只是定製化方面和整合難度都不是首選。所以定了ckeditor。

一開始將ckeditor引入系統中的是標準版本結果後面沒有除錯出字型的配置工具欄,後面重新引入了full版本,進行了定製化。

引入之後出現了兩個問題

1. ckeditor的初始化問題(ckeditor不能輸入,不可用,沒有游標)

這個問題跟angularjs,layer彈出框的初始化順序有關。

經過滿哥指導需要每次都重新初始化ckeditor,不然angularjs就會報錯,說是ckeditor已經定義初始化了,不能重新初始化。

所以在每次開啟layer的彈出框都要重新初始化。

網上有很多加**成功的案例,在我這裡乙個都不好使。

如果不是每次開啟先銷毀ckeditor的話,第一次開啟編輯視窗是好使的,但是第二次就不能輸入了。

contracttemplateindex = dialog.opendialogfullscreen();

if (ckeditor.instances['ckeditor'])

var editor = ckeditor.replace('ckeditor');

執行順序是先執行開啟操作,然後判斷ckedtor是否已經初始化了,如果初始化的話,則移除初始化的ckeditor,然後重新初始化。

此時開啟編輯視窗可以編輯合同文字。但是不能選擇工具欄中的下拉框,以及設定**的視窗,這就是第二個問題。

css中的z-index屬性

根據滿哥的除錯,出現某些ckeditor的工具欄無法使用的問題是由於z-index的值有問題。

具體可以參考上面的鏈結。

layer.js彈出的模態視窗的z-index值比較大,而且非常大,由於z-index值越大就會遮住其他dom值小的視窗,這裡的視窗也叫蒙層,蒙版,是隱藏著的。

而且layer的彈出層裡有兩個dom節點中都設定了這個屬性,因此在開啟彈出層之後就要重新設定z-index的值。由於這兩個dom節點也有前後之分。所以設定值有區別。整體**如下:

ckeditor的config配置如下:

config.******* = 『full』; //代表是全版本的ckeditor,同時也有基礎版本的,

// 只有全版本的外掛程式比較多,支援的工具欄操作也比較多

config.*******_full =

[['source','-','newpage','preview','-','templates'],

['cut','copy','paste','pastetext','pastefromword','-', 'spellchecker', 'scayt'],

['undo','redo','-','selectall','removeformat'],

['bidiltr', 'bidirtl'],

'/',

['bold','italic','underline','strike','-','subscript','superscript'],

['numberedlist','bulletedlist','-','outdent','indent','blockquote'],

['justifyleft','justifycenter','justifyright','justifyblock'],

['anchor'],

['table','horizontalrule','specialchar'],

'/',

['styles','format','font','fontsize'],

['textcolor','bgcolor'],

['maximize', 'showblocks','-','about']

];config.*******_basic =

[['bold', 'italic', '-', 'numberedlist', 'bulletedlist', '-', 'link', 'unlink','-','about']

];

這是最簡單的定製,如果要深度定製的話,還可以在config檔案裡面增加詳細的配置。

vue js modal 模態彈出視窗

基於vue實現的modal視窗,單獨元件,方便使用,還很美觀 vue js modal github vue js modal example 使用終端在專案根目錄執行以下指令碼後,package.json 的dependencies中會出現vue js modal x.x.xx的依賴 npm i ...

彈出新增模態框

在我們所做的專案中,增刪查改是非常常見的,而我現在要講的是新增裡面的乙個小的知識 點,我們新增的時候,首先要彈出乙個新增的框體,我們把它稱為模態框,下面我開始詳細講 解一下如何彈出新增的模態框,下面是乙個關於考生錄入的新增。彈出新增模態框 function openinsertmodal 專業下拉框...

彈出對話方塊(模態和非模態)

windows應用程式有兩種對話方塊 模態對話方塊 modal dialog 和非模態對話方塊 modeless dialog 構造兩種對話方塊的大多數工作都相同,只是兩者的顯示和資料處理方法有些不同。模態對話方塊工作時,會導致其父視窗無效,直到對話方塊工作結束。非模態對話方塊再開啟期間,允許使用者...