From ace938efad7011826c57b000c1e3e818e6edde55 Mon Sep 17 00:00:00 2001 From: Mikel Kew Date: Wed, 19 Aug 2020 16:47:22 +1000 Subject: [PATCH] Use MutationObserver instead of Mutation Events Mutation Events have been deprecated in favour of MutationObserver. This change prevents deprecation warnings from showing in browser dev consoles. --- lib/web_console/templates/console.js.erb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/web_console/templates/console.js.erb b/lib/web_console/templates/console.js.erb index f02cbd8f..8c0b2e6c 100644 --- a/lib/web_console/templates/console.js.erb +++ b/lib/web_console/templates/console.js.erb @@ -416,6 +416,14 @@ REPLConsole.prototype.install = function(container) { } } + var observer = new MutationObserver(function(mutationsList) { + for (let mutation of mutationsList) { + if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { + shiftConsoleActions(); + } + } + }); + // Initialize this.container = container; this.outer = consoleOuter; @@ -427,7 +435,7 @@ REPLConsole.prototype.install = function(container) { findChild(container, 'resizer').addEventListener('mousedown', resizeContainer); findChild(consoleActions, 'close-button').addEventListener('click', closeContainer); - consoleOuter.addEventListener('DOMNodeInserted', shiftConsoleActions); + observer.observe(consoleOuter, { childList: true, subtree: true }); REPLConsole.currentSession = this; };