tinymce原裝外掛程式原始碼分析(一) hr

2022-02-15 21:28:46 字數 1432 閱讀 3325

tinymce是一款能方便無限擴充套件的網頁富文字編輯器。

鑑於,網上關於tinymce的文章都是基於簡單使用,而關於外掛程式編寫等,一概搜不到。 本系列文章就tinymce乙個較老的版本(4.2.8 (2015-xx-xx))進行分析。js原始碼見:  .

外掛程式位於plugins目錄下。關於plugin.js檔案的載入。見: tinymce.js l:33446, 這兩行就是如果找到了相應的plugin.min.js就載入plugin.js(原版是載入plugin.min.js,這裡為了除錯,讓它載入了plugin.js)

注:注釋或文中tinymce.js l:20582或者l:20582的形式都表示在tinymce.js的行號。

1 tinymce.pluginmanager.add('hr', function(editor) );

56 editor.addbutton('hr', );

1213 editor.addmenuitem('hr', );

19 });

上文l:3中涉及到乙個核心命令mceinsertcontent(在游標處插入特定的內容)見l:20268這裡省略了n行(這一部分都是關於**健壯性判斷)。。。

常識:selection是與用滑鼠刷選字型(藍底白字)有關。selection.iscollapsed() 只放置游標不選擇,會返回true。

這裡把hr和marker(span)組裝起來,生成可跌迭代的樹結構,類似於dom結構。

parser.parse 函式定義在 l; 12081位置處。其中核心部分:

此函式的第二個引數部分需要是包含內容的父標籤。

1、serializer.serialize是parser.parse的逆運算

2、parser結構的遍歷的乙個例子:l20411~l20423

1                 node =fragment.lastchild;

2if (node.attr('id') == 'mce_marker')

10break;11

}12}13 }

這裡為什麼加了額外加乙個』​『  ? 

是為了把檢視滾動到當前的游標的位置。

mceinsertcontent、delete (刪除選擇的部分)

selection、editor.parser、new serializer

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...

多選外掛程式JS原始碼。

基於jquery的自定義外掛程式 多選頻率外掛程式 function 驗證引數是否合法 function vlidatefrequencyoptions options 頻率型別 基礎資料中的name if frequencytype in options var i it false each d...

AbstractListView原始碼分析3

normal list that does not indicate choices public static final int choice mode none 0 the list allows up to one choice public static final int choice ...