From 695fd8aa14404afc695ae96949ce61965fc2b3ae Mon Sep 17 00:00:00 2001 From: Denis Palashevskii Date: Sun, 10 Mar 2024 11:48:46 +0400 Subject: [PATCH 1/2] ws.js: use event.detail.elt as fallback value for event.target Implemented after Safari on iOS 17.4 broke event.target for custom events. Reported in https://discord.com/channels/725789699527933952/1216185723229704222 --- src/ext/ws.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/ext/ws.js b/src/ext/ws.js index 05be1eca0..c1e29620b 100644 --- a/src/ext/ws.js +++ b/src/ext/ws.js @@ -38,13 +38,14 @@ This extension adds support for WebSockets to htmx. See /www/extensions/ws.md f * @param {Event} evt */ onEvent: function (name, evt) { + var parent = evt.target || evt.detail.elt; switch (name) { // Try to close the socket when elements are removed case "htmx:beforeCleanupElement": - var internalData = api.getInternalData(evt.target) + var internalData = api.getInternalData(parent) if (internalData.webSocket) { internalData.webSocket.close(); @@ -53,8 +54,6 @@ This extension adds support for WebSockets to htmx. See /www/extensions/ws.md f // Try to create websockets when elements are processed case "htmx:beforeProcessNode": - var parent = evt.target; - forEach(queryAttributeOnThisOrChildren(parent, "ws-connect"), function (child) { ensureWebSocket(child) }); From 2335025db1b147f1320e306eab07871d6145f144 Mon Sep 17 00:00:00 2001 From: Denis Palashevskii Date: Sun, 10 Mar 2024 15:26:08 +0400 Subject: [PATCH 2/2] also fix sse.js #2388 --- src/ext/sse.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ext/sse.js b/src/ext/sse.js index 473f23dac..28c4dd32a 100644 --- a/src/ext/sse.js +++ b/src/ext/sse.js @@ -37,10 +37,11 @@ This extension adds support for Server Sent Events to htmx. See /www/extensions */ onEvent: function(name, evt) { + var parent = evt.target || evt.detail.elt; switch (name) { case "htmx:beforeCleanupElement": - var internalData = api.getInternalData(evt.target) + var internalData = api.getInternalData(parent) // Try to remove remove an EventSource when elements are removed if (internalData.sseEventSource) { internalData.sseEventSource.close(); @@ -50,7 +51,7 @@ This extension adds support for Server Sent Events to htmx. See /www/extensions // Try to create EventSources when elements are processed case "htmx:afterProcessNode": - ensureEventSourceOnElement(evt.target); + ensureEventSourceOnElement(parent); } } });