Всплывающее окно Firefox WebExtension - функционал события «click», но «unload» не работает (вместо этого «blur» работает нормально) - PullRequest
2 голосов
/ 10 марта 2019

Когда я изменяю «выгрузить» на «размытие», это работает (к сожалению, даже когда я убираю фокус только с кнопки, вызывающей функцию «прокрутка»). Я хочу, чтобы "stopScrolling" выполнялся после того, как пользователь закрывает (щелкает снаружи) всплывающее окно. Я также пробовал событие «beforeunload», которое также не работает. Ниже приведена поврежденная версия кода:

function scroll(tabs) {
    browser.tabs.sendMessage(tabs[0].id, {
        command: "scroll",
    })
}

function stopScrolling(tabs) {
    browser.tabs.sendMessage(tabs[0].id, {
        command: "stop",
    })
}

function reportError(error) {
    console.error(`Could not execute: ${error}`)
}


function init() {        
    window.addEventListener("unload", () => {
        browser.tabs.query({ active: true, currentWindow: true })
            .then(stopScrolling)
            .catch(reportError)
    })
    window.addEventListener("click", (e) => {
        browser.tabs.query({ active: true, currentWindow: true })
            .then(scroll)
            .catch(reportError)
    })
}

function reportExecuteScriptError(error) {
    document.querySelector("#popup-content").classList.add("hidden")
    document.querySelector("#not-received-msg").classList.remove("hidden")
    document.querySelector("#not-received-msg").textContent = "Script error!"
    console.error(`Failed to execute content script: ${error.message}`)
}

browser.tabs.executeScript({ file: "bcgscript.js" })
    .then(init)
    .catch(reportExecuteScriptError)

1 Ответ

1 голос
/ 10 марта 2019

Я придумал альтернативное решение, которое не то, что я хочу (если есть другие):

window.addEventListener("blur", (e) => {
    if(e.target == window)
        browser.tabs.query({ active: true, currentWindow: true })
            .then(stopScrolling)
            .catch(reportError)
})

Я вижу https://stackoverflow.com/users/8665598/alex-goico примененное событие "выгрузки" здесь FirefoxExtension - onPopupClose событие? и сказал, что оно работает.

...