diff options
author | Richard Macklin <richard.github@nrm.com> | 2019-01-15 22:14:33 -0800 |
---|---|---|
committer | Richard Macklin <richard.github@nrm.com> | 2019-01-15 22:14:33 -0800 |
commit | 39493185d315162933cd60cdecc8643c98ed845d (patch) | |
tree | a85d2892d6eb18c00c6405651efb947c8326b1fc /actioncable/app/javascript/action_cable/connection_monitor.js | |
parent | ac8ffbe76a90d89a5655bea6af5abcac6c7320e0 (diff) | |
download | rails-39493185d315162933cd60cdecc8643c98ed845d.tar.gz rails-39493185d315162933cd60cdecc8643c98ed845d.tar.bz2 rails-39493185d315162933cd60cdecc8643c98ed845d.zip |
Remove explicit `document` receiver from add/removeEventListener calls
This allows ActionCable to be used in a web worker, where the `document`
global is undefined. Previously, attempting to use ActionCable inside a
web worker would result in this exception after you try to open a
connection:
```
ReferenceError: document is not defined
```
The visibilitychange event won't ever get triggered in a worker, so
adding the listener is effectively a no-op there. But the listener is
mainly a convenience, rather than a critical piece of the javascript
interface, so using ActionCable in a worker will still work. (And you
could listen for visibilitychange yourself in a window script, then tell
the worker to reconnect if you still want that behavior.)
Diffstat (limited to 'actioncable/app/javascript/action_cable/connection_monitor.js')
-rw-r--r-- | actioncable/app/javascript/action_cable/connection_monitor.js | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/actioncable/app/javascript/action_cable/connection_monitor.js b/actioncable/app/javascript/action_cable/connection_monitor.js index f0e75ae137..312a71d154 100644 --- a/actioncable/app/javascript/action_cable/connection_monitor.js +++ b/actioncable/app/javascript/action_cable/connection_monitor.js @@ -21,7 +21,7 @@ class ConnectionMonitor { this.startedAt = now() delete this.stoppedAt this.startPolling() - document.addEventListener("visibilitychange", this.visibilityDidChange) + addEventListener("visibilitychange", this.visibilityDidChange) logger.log(`ConnectionMonitor started. pollInterval = ${this.getPollInterval()} ms`) } } @@ -30,7 +30,7 @@ class ConnectionMonitor { if (this.isRunning()) { this.stoppedAt = now() this.stopPolling() - document.removeEventListener("visibilitychange", this.visibilityDidChange) + removeEventListener("visibilitychange", this.visibilityDidChange) logger.log("ConnectionMonitor stopped") } } |