Skip to content

Commit f0d39f0

Browse files
Make phxWindow.addEventListene optional
Co-authored-by: Tomislav Markanovic <[email protected]>
1 parent 157dd54 commit f0d39f0

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

assets/js/phoenix/socket.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ import Timer from "./timer"
108108
* removeItem(keyName) { delete this.storage[keyName] }
109109
* setItem(keyName, keyValue) { this.storage[keyName] = keyValue }
110110
* }
111+
*
112+
* @param {boolean} [opts.disableWindowEventListeners] - Boolean that determines if window event listeners should be active
113+
*
114+
* Defaults to false.
111115
*
112116
*/
113117
export default class Socket {
@@ -137,7 +141,8 @@ export default class Socket {
137141
this.decode = this.defaultDecoder
138142
}
139143
let awaitingConnectionOnPageShow = null
140-
if(phxWindow && phxWindow.addEventListener){
144+
this.disableWindowEventListeners = opts.disableWindowEventListeners || false
145+
if(!this.disableWindowEventListeners && phxWindow && phxWindow.addEventListener){
141146
phxWindow.addEventListener("pagehide", _e => {
142147
if(this.conn){
143148
this.disconnect()

assets/test/socket_test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ describe("with transports", function (){
3939
expect(socket.longpollerTimeout).toBe(20000)
4040
expect(socket.heartbeatIntervalMs).toBe(30000)
4141
expect(socket.logger).toBeNull()
42+
expect(socket.disableWindowEventListeners).toBe(false)
4243
expect(socket.binaryType).toBe("arraybuffer")
4344
expect(typeof socket.reconnectAfterMs).toBe("function")
4445
})
@@ -64,6 +65,7 @@ describe("with transports", function (){
6465
logger: customLogger,
6566
reconnectAfterMs: customReconnect,
6667
params: {one: "two"},
68+
disableWindowEventListeners: true
6769
})
6870

6971
expect(socket.timeout).toBe(40000)
@@ -72,6 +74,7 @@ describe("with transports", function (){
7274
expect(socket.transport).toBe(customTransport)
7375
expect(socket.logger).toBe(customLogger)
7476
expect(socket.params()).toEqual({one: "two"})
77+
expect(socket.disableWindowEventListeners).toBe(true)
7578
})
7679

7780
describe("with Websocket", function (){

0 commit comments

Comments
 (0)