Разработка аддонов 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 Хотя это и не нужно, это также может быть хорошим вариантом.

Другие вопросы по тегам