Skip to content

Conversation

@biplavbarua
Copy link
Contributor

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 addEventListener to block visibility events, but didn't override removeEventListener. 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:

  1. Symmetry: Now overrides both addEventListener and removeEventListener.
  2. Tracking: It keeps a Map of original listeners to their wrappers.
  3. Clean Cleanup: When a site calls 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. 🚀

…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).
@polywock
Copy link
Owner

Hi! Tested and it doesn't seem to resolve the issue. You can try yourself at https://hianime.to

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants