1. 程式人生 > >Firefox擴充套件開發

Firefox擴充套件開發

轉:

最近玩了一把Firefox的擴充套件開發,感覺不錯。倒騰出來一個ChinaStock,有興趣的可以瞧瞧(現在還被放在Sandbox裡面,必須登入才能下載安裝;同時因為被放在sandbox裡面,暫時還不能被自動更新版本)。如果您願意的話,也可以直接在本站下載安裝

擴充套件開發中用得著的擴充套件(有點拗口):

Extension Developer's Extension  (xpi download / install address) 快速將擴充套件目錄打包成xpi檔案,在不重啟Firefox的情況下重新載入所有擴充套件以及其他實用小功能。必備!如果不使用該擴充套件快速過載擴充套件的話,每次修 改程式碼之後都必須從Firefox的選單欄選擇“退出”關閉Firefox再開啟才有99%的機率保證該Chrome內容是最新修改後的,那叫一個痛苦。 即使設定引數 nglayout.debug.disable_xul_cache = true ,也只是減少了修改視窗或對話方塊之後的重啟而已。

Chrome List + Extension Manager Extended 學習其他人寫的擴充套件總是最快入門的方法。 Chrome List 提供了擴充套件瀏覽功能,可以檢視擴充套件安裝之後存在的問題和jar包裡面的原始碼;Extension Manager Extended 則擴充套件了Firefox的擴充套件軟體列表功能,直接顯示每個擴充套件的ID,通過右鍵可以直接開啟擴充套件存放的目錄,再不需要去資源管理器找深埋在 Application Data\Mozilla\Firefox\Profiles\[email protected]#$%^.default\extensions 裡的jar包,也不需要去猜測使用UUID

作為ID的擴充套件到底對應在哪個子目錄了。

DebugLogger + Console2 DebugLogger 是 dump() 的優化版本。可以按照每個專案分別檢視各自的dump資訊。像 Firebug 這樣的大師級擴充套件屬於開發必備不需多講,這個 DebugLogger 相較而言屬於輕量級並且原始的除錯輔助工具。配合它,至少不需要再用alert來簡單粗暴了。 Console2 則是錯誤控制檯的加強版,實現了 Firefox 3 錯誤控制檯的一些特性。

現有HTML程式碼的利用:

雖然並不被鼓勵,但對於更熟悉HTML語法的開發者來說, 最快捷編寫擴充套件介面的方法是在 XUL 中引入 HTML

 名稱空間(為根標籤增加屬性 xmlns:html="http://www.w3.org/1999/xhtml"), 然後給所有使用到的HTML標籤新增 html: 字首(比如 <div>...</div> 應該寫成 <html:div>...</html:div>)即可。當然,因為 XUL 是基於 XML 的語言,所以所有的標籤屬性都應該是小寫格式,並且空tag必須進行關閉。

相應的,由於上述定義方式下HTML 元素標籤定義不在主名稱空間內,當進行 DOM 操作的 js 程式碼在建立 HTML 元素的時候,也不能直接使用 createElement ,而必須使用 createElementNS 。比如 document.createElementNS("http://www.w3.org/1999/xhtml","html:div");

關於擴充套件ID:

每個擴充套件軟體都必須有個唯一的標識ID,建議是使用UUID,也可以使用形如 [email protected](必須有@符號但不必是真實的域名) 的字串。生成UUID的方法很多:windows下可以安裝微軟自己提供的GUID Generator,*nix 下直接敲命令 uuidgen ,或者訪問這裡線上生成一個。個人覺得雖然UUID不會造成ID衝突,但 @ 形式的可讀性更強一些,否則不靠前面提到的擴充套件幫忙要把ID跟功能對應起來還真是件費力的事情。 

擴充套件描述的本地化:

在 Firefox 擴充套件管理器中,每個擴充套件的名字下面都有一段簡短的描述(description),這段描述來自擴充套件根目錄下的 install.rdf 檔案。將這段描述進行本地化處理的方法是在擴充套件目錄下建立子目錄 defaults/preferences ,在子目錄下新建一個 js 檔案 myextname.js ,包含以下內容:

pref("extensions.ReplaceWithExtensionIDHere.description", "chrome://myextname/locale/myextname.properties");

同時在 locale 語言包檔案 myextname.properties 中新增一行:

extensions.ReplaceWithExtensionIDHere.description = 經過本地化的描述內容

擴充套件的打包釋出:

如果使用 Extension Developer's Extension 提供的extension builder 進行打包,它會在build的過程中自動將chrome.manifest中的目錄配置替換成jar:chrome的形式,而不需要自己來回切換不同的chrome.manifest配置。當然前提是你的擴充套件工作目錄按照約定的結構進行組織。如果你沒有把content / skin / locale 目錄放在工作根目錄而是放在了 chrome 子目錄下的話,打包之後xpi檔案會同時包含jar檔案和chrome整個目錄。生成xpi檔案之後,到 Firefox Add-ons 的開發者工具介面進行註冊/登入/上傳即可。

如果程式碼實際是相容Firefox的最新版本的,只是因為在install.rdf裡面的em:maxVersion設定了過老的版本號而導致你釋出在AMO上的擴充套件被認為不相容而無法下載的話,可以登入AMO後進入開發者工具管理介面,選擇相應的擴充套件,點選版本歷史列出的版本號連結進去,就可以快速修改該版本xpi的相容版本範圍(找這個修改的地方找了N久,OrZ)。

參考文件:

相關推薦

Firefox擴充套件開發

轉: 最近玩了一把Firefox的擴充套件開發,感覺不錯。倒騰出來一個ChinaStock,有興趣的可以瞧瞧(現在還被放在Sandbox裡面,必須登入才能下載安裝;同時因為被放在sandbox裡面,暫時還不能被自動更新版本)。如果您願意的話,也可以直接在本站下載安裝。 擴充套件開發中用得著的擴充套件(有點拗

FireFox外掛和擴充套件開發(四)——常見問題的解決

一、FireFox擴充套件中的外掛註冊問題 使用擴充套件,如果擴充套件中帶了XPCOM元件,放在擴充套件的components目錄下,名別寫錯了,今天折騰半天就因為筆誤,總是馬虎。然後要刪除profile中的兩個xpt檔案,重起FireFox,它們會自動註冊。所以元件介面等有

firefox os 開發模擬器1.4版本號安裝開發具體解釋

連接 repeat href view round chm strong col idt 首先在使用firefox os 模擬器的時候必須先下載firefox 瀏覽器,這個是眾多web開發人員必備的工具,下載地址firefox 瀏覽器 。在最新的官方版本號是1.5版的模

【乾貨】Chrome外掛(擴充套件)開發全攻略(轉載)

轉載來源:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html 【乾貨】Chrome外掛(擴充套件)開發全攻略 寫在前面 我花了將近一個多月的時間斷斷續續寫下這篇博文,並精心寫下完整demo,寫部落格的辛苦大家懂的,

利用Visual Studio 2017的擴充套件開發(VSIX、ItemTemplate) 快速實現專案的半自動化搭建

目錄 0.引言 1.什麼是Visual Studio專案模板 2.IWizad介面 3.通過Visual Studio擴充套件開發實現領域驅動開發 3.1 使用VSIX+ProjectTemplate建立專案模板 3.2使用ItempTemplate建立自定義項模板

【娛樂向】製作Chrome天氣預報擴充套件程式 【乾貨】Chrome外掛(擴充套件)開發全攻略

1.什麼是Chrome擴充套件程式   Chrome擴充套件程式是一個用Web技術開發,用來擴充套件增強瀏覽器功能的軟體。和一般的網頁一樣,Chrome擴充套件程式由html、js、css和圖片等部分組成。Chrome外掛的種類功能有很多,比如截圖、去廣告和觀看vip視訊等等,這些對瀏覽器底層的擴充套件都需

php擴充套件開發-變數設定和銷燬

//定義變數 zval *op; //分配記憶體 MAKE_STD_ZVAL(op); //賦值 ZVAL_LOGN(op, 0); //獲取 op 的值 if (Z_LVAL_P(op)) { php_printf("%s", "true"); } else { p

php擴充套件開發-錯誤處理

//輸出php錯誤 //NULL TSRMLS_CC 預設寫法 //E_NOTICE 錯誤級別 //錯誤內容 php_error_docref(NULL TSRMLS_CC, E_NOTICE, "test"); //Notice: confirm_xing2233_compiled()

php擴充套件開發-陣列操作

//add_assoc_*系列函式,生成字元索引: add_assoc_null(zval *aval, char *key); add_assoc_bool(zval *aval, char *key, zend_bool bval); add_assoc_long(zval *ava

skipper filter 擴充套件開發

skipper 的擴充套件包含filter型別的,以及Predicates ,當然script(lua)指令碼也是 這次主要是filter型別的開發 filter 介面約定 格式 filter 至少需要包含spec&&filter 型別 spec 包含使用者初始化filter

php擴充套件開發--快速入手

我們首先找到快速上手文章裡面關於函式定義的程式碼,以此說明然後開發PHP的函式 //php_myext.h PHP_FUNCTION(myext_hello);//函式申明,所有在myext.c檔案定義的函式,都會在這個檔案裡有一個申明 //myext.c static

Firefox擴充套件推薦

Firefox是一款非常出色的開源跨平臺瀏覽器,通過擴充套件和指令碼你可以給它增加各種功能,而且還有各種主題讓你對它進行美化,下面推薦一些實用的擴充套件 * uBlock Origin 去廣告擴充套件,特點是資源佔用少,而且能新增許多過濾器和自定義過濾 * Greasemonkey

Yii2擴充套件開發與程式碼複用:以資源包為例

Yii2是目前最流行的PHP開發框架之一,具有簡潔優雅、脈絡清晰、開放融合、易於擴充套件、開發高效等等特點。 在使用Yii2 Framework開發專案的過程中,必然會遇到很多複用程式碼或公共程式碼的管理問題,例如在backend和frontend都會用到的Css樣式資源、

Unity3D開發之編譯器Inspector面板擴充套件開發

沒有系統性的研究unity編譯器的擴充套件開發,所以就是遇到什麼需求就去研究什麼需求。之前寫過一兩次,後來沒怎麼用就忘記了。這次開發專案又遇到同樣需求,我百度了半天好容易找到答案。心想這次還是記錄下來,下次可以直接回顧掌握了。 一。最近在做模擬教學的內容。涉及到步驟操作檢測。比如我們不開啟總

Phalcon + Swoole擴充套件 開發即時通訊功能

注意Swoole擴充套件和Swoole框架的區別 做即時通訊、網路聊天室功能時可以用用Swoole擴充套件 基於swoole擴充套件實現真正的PHP資料庫連線池 被swoole坑哭的PHP程式設計師 類似軟體:Workerman

php擴充套件開發筆記(9)sizeof 和 strlen 遇到空字元 '\0' 的問題

看看下面程式碼的不同表現 #include <stdio.h> #include <stdlib.h> #include <string.h> int m

flume介紹及擴充套件開發心得

上圖的Flume的Architecture,在Flume中,最重要的抽象是data flow(資料流),data flow描述了資料從產生,傳輸、處理並最終寫入目標的一條路徑。在上圖中,實線描述了data flow。其中,Agent用於採集資料,agent是flume中產生資料流的地方,同時,agent會將產

Windows下php擴充套件開發c++動態庫

PHP擴充套件開發,從零瞭解到初步完成一個小專案,經過三天的仔細研究,現整理如下 一、需求介紹 PHP擴充套件開發,呼叫自己之前的c++動態庫,完成功能 二、專案之前 系統:windows xp  開發工具:vs 2008 web環境:apache2.4  PHP5.3.2

【Adobe CEP 擴充套件開發】Playful Palette 調色盤

demo 關於論文 這個論文其實還是比較簡單的啦(我不過我只看了和寫的部分有關的內容) 主要部分一個是水滴融合,一個是提出了新的互動方式(的樣子)。(為什麼不是一篇HCI論文而是一篇圖形學論文) 因為原文是在Pad上的一個軟體,所以相