diff --git a/extension/media-control-api.js b/extension/media-control-api.js index e912195..070fd0b 100644 --- a/extension/media-control-api.js +++ b/extension/media-control-api.js @@ -32,10 +32,17 @@ document.addEventListener("MediaControlStateChanged", function (event) { } }); -// Unregister tab before move to another URI -window.onunload = function() { +// Unregister tab before navigating away or entering bfcache +window.addEventListener("pagehide", function () { chrome.runtime.sendMessage({command: "unregisterTab"}); -}; +}); + +// If restored from bfcache, re-register based on current controllable state +window.addEventListener("pageshow", function (event) { + if (event.persisted) { + registerOrUnregisterPage(isPageMediaControllable()); + } +}); // Initial tab registration by meta tag registerOrUnregisterPage(isPageMediaControllable()); @@ -55,4 +62,4 @@ function isPageMediaControllable() { function registerOrUnregisterPage(register) { chrome.runtime.sendMessage({command: register ? "registerTab" : "unregisterTab"}); -} \ No newline at end of file +}