Fix: Robust Event Hijacking for Background Play (prevents site breakage) #807
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. 🚀