From 2b7b279218140f3305357afdfd44f1dadd738b2f Mon Sep 17 00:00:00 2001 From: Antoine Guenet Date: Mon, 22 Aug 2022 11:31:34 +0000 Subject: [PATCH] [FIX] web_editor: prevent wrong DOM operations when editable not in DOM `getDeepRange` fetched a range on potentially the wrong document and `getTraversedNodes` created a node iterator on potentially the wrong document, when the editable was not in the DOM. Part-of: odoo/odoo#92200 --- .../static/src/js/editor/odoo-editor/src/utils/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js b/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js index 5a3fa2e88f9..2e34b8a59af 100644 --- a/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js +++ b/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js @@ -670,8 +670,8 @@ export function getSelectedNodes(editable) { * @returns {Range} */ export function getDeepRange(editable, { range, sel, splitText, select, correctTripleClick } = {}) { - sel = sel || editable.ownerDocument.getSelection(); - range = range ? range.cloneRange() : sel.rangeCount && sel.getRangeAt(0).cloneRange(); + sel = sel || editable.parentElement && editable.ownerDocument.getSelection(); + range = range ? range.cloneRange() : sel && sel.rangeCount && sel.getRangeAt(0).cloneRange(); if (!range) return; let start = range.startContainer; let startOffset = range.startOffset;