Разработка аддонов Firefox, откройте скрытый веб-браузер
Я разрабатываю аддон Firefox, как я могу открыть веб-браузер, который скрыт от пользователя, но я могу написать его из Javascript в моем коде аддона?
1 ответ
Пользователи SDK должны использовать page-worker
модуль.
Дополнения XUL могут вставить XUL <iframe type="content">
где-нибудь и сделать это скрытым (например, .style.display = "none";
). Кроме того, вы можете отключить изображения / плагины / сценарий в этом <iframe>
,
Если предположить, window
это окно XUL, такое как browser.xul
Вот пример чтения названия сайта из скрытого <iframe>
:
function readTitleFromPage(uri, callback) {
callback = callback || function() {};
let frame = document.createElement("iframe");
frame.setAttribute("type", "content");
frame.style.display = "none";
document.documentElement.appendChild(frame);
let docShell = frame.contentWindow.
QueryInterface(Ci.nsIInterfaceRequestor).
getInterface(Ci.nsIWebNavigation).
QueryInterface(Ci.nsIDocShell);
docShell.allowImages = false;
docShell.allowPlugins = false;
frame.setAttribute("src", uri);
let load = function load(e) {
try {
if (e.type == "load") {
callback(frame.contentDocument.title);
}
else {
callback(null);
}
}
finally {
// Always remove event listeners and the frame itself, at some point.
// In this example, we don't need the frame anymore, beyond this point,
// so remove it now.
frame.removeEventListener("load", load, false);
frame.removeEventListener("error", load, false);
frame.removeEventListener("abort", load, false);
frame.parentElement.removeChild(frame);
}
};
frame.addEventListener("load", load, false);
frame.addEventListener("error", load, false);
frame.addEventListener("abort", load, false);
}
Конечно, вы можете держать рамку столько, сколько хотите, использовать ее столько раз, сколько хотите, и так далее. Но убедитесь, что удалили его, когда он вам больше не нужен, для экономии ресурсов (памяти, процессора). Сбросить его до about:blank
Хотя это и не нужно, это также может быть хорошим вариантом.