Firefox擴展開發之二

        開發插件實在是很痛苦的一件事情,因爲他需要用到Firefox的chrome系統,而每次更新了代碼之後,都需要重新載入chrome才能起作用。 一般情況下要重啓chrome就需要重新啓動firefox,還好有人已經發現這種痛苦,所以開發了一個Extension Developer Manager,裏面提供了好幾個工具,用的最多的是reload chrome,用來在不重啓firefox的情況下,重新載入chrome,第二個是javascript shell,他可以訪問任意一個當前的firefox窗口。而要完成插件開發,一般還要用到Console,因爲很多調試信息都需要通過這看,如果沒這玩意,那估計每次都得用alert了。至於DOM Inspector一般用不上,因爲如果你要象greesemonkey那樣,獲取當前頁面的HTML DOM的話,一般都只能通過事件來實現,然後hack到她的appcontent裏面,這東西在DOM Inspector裏面沒有,所以,你通過這種方式修改了DOM樹,通過DOM Inspector是看不出來的,而爲了驗證你有沒有修改成功,現在我的方法就是靠javascript shell。
        關於DOM,我搞了足足兩天,纔算搞出個所以然來,由於firefox是用XUL寫的,而XUL也定義了DOM,所以,一般情況下你在擴展裏頭,或者javascript shell裏面通過document獲取的僅僅是XUL的DOM,要獲取browser裏面的DOM,我現在探索出來的有兩種,一種是greesemonkey那樣,用事件,每次都監察DOMContentLoad事件,這個方法很危險,例如如果一個網頁他有多個frame,那麼這個事件就會發生多次,而由於greesemonkey只是在加載的時候用user script對DOM做一次處理,所以這個問題不是特別大。不過,如果我要做的是能夠多次操作DOM樹,所以,就必須要得到當前窗口的當前正在顯示的DOM,爲了獲取這鼕鼕,我足足用了2天,google了所有能想到的關鍵詞,把XUL planet和MDC上面的文章都翻了個遍,最後終於在moznet的irc上面問到人了,原來要得到這東西根本不需要用事件,只要通過content.document就可以得到了。實在不容易啊。
       
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章