Fix: Robust Event Hijacking for Background Play (prevents site breakage)#807
Open
biplavbarua wants to merge 1 commit intopolywock:masterfrom
Open
Fix: Robust Event Hijacking for Background Play (prevents site breakage)#807biplavbarua wants to merge 1 commit intopolywock:masterfrom
biplavbarua wants to merge 1 commit intopolywock:masterfrom
Conversation
…age\n\n- Fixes the issue where removeEventListener failed because only addEventListener was overridden.\n- Now correctly tracks wrapped listeners in a Map and unwraps them on removal.\n- Ensures sites can clean up their visibilitychange listeners, preventing memory leaks and logic errors on SPAs (e.g. anime sites).
Owner
|
Hi! Tested and it doesn't seem to resolve the issue. You can try yourself at |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hey @polywock! 👋
I completely understand why you had to revert the "Force Background Play" feature. I dug into the issue regarding the anime websites breaking, and I found the root cause.
The Issue:
My previous implementation hijacked
addEventListenerto block visibility events, but didn't overrideremoveEventListener. This meant that when sophisticated web apps (like anime sites or SPAs) tried to clean up their event listeners, they couldn't remove my wrapper. This caused memory leaks and logic errors where sites thought they were still listening to events they tried to remove.The Fix:
I've rewritten the logic to be much more robust:
addEventListenerandremoveEventListener.Mapof original listeners to their wrappers.removeEventListener, it correctly looks up the wrapper and removes it from the browser, ensuring no "ghost" listeners are left behind.This should allow the "Force Background Play" / "Prevent background detection" feature to exist safely without interfering with a site's internal logic.
Thanks again for the feedback and for maintaining this awesome extension! Hope this implementation is solid enough to be merged back in. 🚀