用了幾個小時的時間總算成功了 = =
代碼:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE overlay [
<!ENTITY % KuDTD SYSTEM "chrome://kufirefox/locale/kufirefox.dtd">
%KuDTD;
]>
<overlay id="KuBookmarksOverlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml">
<script type="application/x-javascript" src="chrome://kufirefox/content/KuBookmarks.js"/>
<grid id="editBookmarkPanelGrid">
<row id="KuBookmarks_FavIconRow" hidden="true">
<label value="&kufirefox.favicon.label;"
control="KuBookmarks_FavIconField"
observes="paneElementsBroadcaster"/>
<textbox id="KuBookmarks_FavIconField"
multiline="true"
readonly="true"
observes="paneElementsBroadcaster"/>
</row>
</grid>
</overlay>
代碼:
var gKuBookmarks = {
FaviconService : Components.classes["@mozilla.org/browser/favicon-service;1"].getService(Components.interfaces.nsIFaviconService)
,
bookmark : PlacesUtils.bookmarks.getBookmarkURI(window.arguments[0].itemId)
,
getFaviconDataAsDataURL : function(uri) {
if (gKuBookmarks.FaviconService.getFaviconDataAsDataURL)
return gKuBookmarks.FaviconService.getFaviconDataAsDataURL(uri);
else {
var aMimeType = {};
var aData = gKuBookmarks.FaviconService.getFaviconData(uri, aMimeType, {});
return 'data:' + aMimeType.value + ';base64,' + btoa(String.fromCharCode.apply(null, aData));
}
}
,
Init : function() {
document.getElementById('editBMPanel_descriptionRow').parentNode.appendChild(document.getElementById('KuBookmarks_FavIconRow'));
if (gKuBookmarks.bookmark) {
try {
var iconURI = gKuBookmarks.FaviconService.getFaviconForPage(gKuBookmarks.bookmark);
document.getElementById('KuBookmarks_FavIconField').value = gKuBookmarks.getFaviconDataAsDataURL(iconURI);
document.getElementById('KuBookmarks_FavIconRow').hidden = false;
window.sizeToContent();
} catch (e) {}
}
}
};
window.addEventListener('load', gKuBookmarks.Init, false);
雖然code沒幾行不過debug和查資料花了不少時間...Orz
而且不知道為什麼...好像這種彈出式視窗所發生的錯誤不會顯是在錯誤主控台...
造成debug上的困擾@@