aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Macklin <richard.github@nrm.com>2019-01-15 22:14:33 -0800
committerRichard Macklin <richard.github@nrm.com>2019-01-15 22:14:33 -0800
commit39493185d315162933cd60cdecc8643c98ed845d (patch)
treea85d2892d6eb18c00c6405651efb947c8326b1fc
parentac8ffbe76a90d89a5655bea6af5abcac6c7320e0 (diff)
downloadrails-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.)
-rw-r--r--actioncable/app/assets/javascripts/action_cable.js4
-rw-r--r--actioncable/app/javascript/action_cable/connection_monitor.js4
2 files changed, 4 insertions, 4 deletions
diff --git a/actioncable/app/assets/javascripts/action_cable.js b/actioncable/app/assets/javascripts/action_cable.js
index 2b51eadb9e..280adbfa83 100644
--- a/actioncable/app/assets/javascripts/action_cable.js
+++ b/actioncable/app/assets/javascripts/action_cable.js
@@ -49,7 +49,7 @@
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");
}
};
@@ -57,7 +57,7 @@
if (this.isRunning()) {
this.stoppedAt = now();
this.stopPolling();
- document.removeEventListener("visibilitychange", this.visibilityDidChange);
+ removeEventListener("visibilitychange", this.visibilityDidChange);
logger.log("ConnectionMonitor stopped");
}
};
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")
}
}