讓套件選項視窗 resizable(可縮放)
先說明一下,如果你不想寫/改套件,這篇文章很慚愧地幫不上什麼忙。
問題是這樣:Firefox「附加元件管理員」開啟的選項視窗(prefwindow)是不能縮放的;所以視窗過大、過小都會變成痛苦。以往要突破此限制,可能會另外提供開視窗的方法,例如把選項放在工具列以便自行操作開視窗的行為;但不是每個套件都值得為了這個,特別新增選單項目佔空間吧。
正好前幾天 Tab Mix Plus 放出新版 0.3.7,發現他的選項視窗很特別,開了以後還能把套件管理員關掉(本來是暫時關不掉),於是看了原始碼,在 chrome/content/tabmixplus/links/setup.js 第 29 行找到魔法的痕跡……細節就省略,因為跟下面改的東西原理相同(改的極少,恐怕說抄比較貼切。)
這是一個 XUL、overlay 檔案,讓附加元件管理員開出可縮放的視窗:
<?xml version="1.0" encoding="UTF-8"?> <overlay id="resizable-extensions-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/x-javascript"><![CDATA[ // Make prefwindow resizable. // overwrite cmd_options, see chrome/tookit/content/mozapps/extensions/extensions.js window.addEventListener("load", function(){ eval("gExtensionsViewController.commands.cmd_options ="+gExtensionsViewController.commands.cmd_options.toString().replace( 'openDialog(optionsURL, "", features);', 'openDialog(optionsURL, "", features + ",resizable=yes"'; )); return; }, false); ]]></script> </overlay>
看來是鑽到某個不為人知的物件,把它的方法轉成字串修改後再 eval ……感覺很不可靠,但是寫法好簡單,乾脆急病亂投醫吧。
有 0 個意見
☂