原始頁面在:https://developer.mozilla.org/En/Custom_about:_URLs
該文章前面部分是針對firefox4之前的,也就是gecko2.0版本之前的,這裏我就不描述了,第二部分是針對firefox4及之後版本的。到目前爲止的firefox版本是支持的。作者給出的是一個模板,修改他的模板就可以實現了。下面是修改模板的具體步驟:
首先,按照編寫extension的方式,建立文件目錄,我使用之前做的一個hello world擴展來改編的,在擴展的目錄下建立一個components目錄。有的話就不用新建了。在components目錄下新建一個javascript文件(例如:aboutSitename.js,我建立的文件爲aboutgucasia.js),先將模板內容複製進去。
const Cc = Components.classes;
const Ci = Components.interfaces;
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
function AboutSitename() { }
AboutSitename.prototype = {
classDescription: "about:sitename",
contractID: "@mozilla.org/network/protocol/about;1?what=sitename",
classID: Components.ID("{YOUR-UUID}"),
//Note: classID here should be exactly the same as CID in chrome.manifest
QueryInterface: XPCOMUtils.generateQI([Ci.nsIAboutModule]),
getURIFlags: function(aURI) {
return Ci.nsIAboutModule.ALLOW_SCRIPT;
},
newChannel: function(aURI) {
let ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
let channel = ios.newChannel("chrome://CHROMEDIR",
null, null);
//Note:"chrome://CHROMEDIR" is like chrome://extension/content/aboutSitename.html Read more about chrome registration: https://developer.mozilla.org/en/Chrome_Registration
channel.originalURI = aURI;
return channel;
}
};
const NSGetFactory = XPCOMUtils.generateNSGetFactory([AboutSitename]);
第二步,在擴展的chrome.manifest文件末尾添加如下模板的內容:
component CIDrelative/file/location/of/file.js/whereever/you/put/it
[email protected]/network/protocol/about;1?what=sitename CID
例如,我添加的內容是:
component{09bde46b-739c-4a6d-8ffd-f170972db8c9} components/aboutgucasia.js
[email protected]/network/protocol/about;1?what=gucasia{09bde46b-739c-4a6d-8ffd-f170972db8c9}
這裏的CID可以用很多工具生成,也可以使用網絡工具生成,打開http://mozilla.pettay.fi/cgi-bin/mozuuid.pl即可獲取一個CID,這裏使用的CID也要與js文件中的CID相同。
第三步,修改js模板中需要改動的地方。按自己的需要進行修改。首先將chrome.manifest文件中使用的CID複製並替換模板中的YOUR-UUID。然後將sitename替換爲你想要使用的字符串。我使用的是gucasia。應該只需要改動兩個地方就可以了。不過我將Sitename和sitename都改成了gucasia。最後,將chrome://CHROMEDIR替換爲你想要打開的網頁,我使用的是http://www.ia.cas.cn/,後來又用http://www.baidu.com/試了一下。
修改完之後,將這個擴展複製到用來測試的profile的extensions目錄下,用該profile打開firefox。在地址欄中輸入about:sitename(本例輸入about:gucasia)就可以打開chrome://CHROMEDIR指定的頁面了。這個與輸入網址打開有些差別,不知道是什麼原因。用瀏覽器輸入網址瀏覽的時候是下面這樣的:而使用百度的時候卻打開了跟平時一樣的頁面。