VisibilityChangeHandler.js 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. function VisibilityChangeHandler() {
  2. this.subscribers = [],
  3. this.bindFunc = void 0,
  4. this.id = 1,
  5. this.addListener()
  6. }
  7. VisibilityChangeHandler.prototype = {
  8. subscribe(i) {
  9. if (!i)
  10. return;
  11. const e = ++this.id
  12. , t = {
  13. id: e,
  14. handler: i
  15. };
  16. return this.subscribers.push(t),
  17. ()=>{
  18. this.subscribers = this.subscribers.filter(n=>n.id == e)
  19. }
  20. },
  21. destroy() {
  22. !this.bindFunc || (document.hidden !== void 0 ? document.removeEventListener("visibilitychange", this.bindFunc, !1) : document.webkitHidden && document.removeEventListener("webkitvisibilitychange", this.bindFunc, !1))
  23. },
  24. broadcast(i) {
  25. this.subscribers.forEach(e=>e.handler(i))
  26. },
  27. addListener() {
  28. document.hidden !== void 0 ? (this.bindFunc = ()=>this.broadcast(document.hidden),
  29. document.addEventListener("visibilitychange", this.bindFunc, !1)) : document.webkitHidden && (this.bindFunc = ()=>this.broadcast(document.webkitHidden),
  30. document.addEventListener("webkitvisibilitychange", this.bindFunc, !1))
  31. }
  32. };