昨天改 TinyMCE 的 insertcode 外掛時, 順便看了一下 GZIP compressor 的問題, 除了之前寫過 1.0.9 版的問題之外, 終於算是了解了這個 compressor 的運作了.
基本上, 在 1.0.9/1.1.0 的版本, 提供了一個 tiny_mce_gzip.js 的程式, 在官方的使用說明上頭, 是必須先載入這個 js 檔, 然後在後面先呼叫 tinyMCE_GZ.init() 來產生壓縮的檔案, 然後再呼叫 tinyMCE.init() 來執行.
而一般來說, 我們是在 tiny_mce-plog.js 中呼叫 tinyMCE.init(), 而這個檔案通常是在 tiny_mce_gzip.php 或 tiny_mce_gzip.js 之後才載入. 所以這部份並不會有問題. 問題是, 我們應該在什麼時候呼叫 tinyMCE_GZ.init() 呢? 最簡單的作法, 就是把這個指令放到 tiny_mce_gzip.js 中, 這樣, 就可以保證在執行到 tinyMCE_GZ.init() 了.
另外, 在使用時, 只有載入 tiny_mce_gzip.js, 就會自動再載入 tiny_mce_gzip.php 去做壓縮的動作了. 所以, 在使用時, 我們也只要載入 tiny_mce_gzip.js, 接著載入 tiny_mce-plog.js, 這樣子就可以正常使用.
至於要告訴 tiny_mce_gzip.php 要壓縮那些東西, 可以寫在 tiny_mce_gzip.js 中的 plugins, themes, languages 之中. 或者在呼叫 tinyMCE_GZ.init() 時, 用參數的方式傳入. (不過... 寫在同一個檔案, 不如直接改 tiny_mce_gzip.js 一開始的設定就好了)
有一個重要的地方是, tiny_mce_gzip.php 只會壓縮 editor_plugin_src.js, 並不會處理 editor_plugin.js (雖然一般正常執行應該是載入這個才對), 我試過去加上 suffix 參數, 好像還是一樣. 所以... 建議把你用到的 plugins 都建一個 editor_plugin_src.js 來用吧.