From 01aa0621b986f2fe55b27beb75daab5e7515f16d Mon Sep 17 00:00:00 2001 From: "Julien Carion (juca)" Date: Fri, 12 Jan 2024 10:37:00 +0000 Subject: [PATCH] [FIX] web: avoid popover crash in iframe This commit solves a crash which can happen when a popover points to an element inside an iframe that has been removed from the DOM. In those cases, the element's ownerDocument does not have a defaultView. closes odoo/odoo#151235 X-original-commit: 1ccebdbd2fcc6875173b02a31d89f3c2e9ffbfec Signed-off-by: Samuel Degueldre (sad) --- addons/web/static/src/core/popover/popover.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/core/popover/popover.js b/addons/web/static/src/core/popover/popover.js index 2355763c84d..3d4d517e6bc 100644 --- a/addons/web/static/src/core/popover/popover.js +++ b/addons/web/static/src/core/popover/popover.js @@ -145,8 +145,12 @@ Popover.props = { validate: (target) => { // target may be inside an iframe, so get the Element constructor // to test against from its owner document's default view - const Element = target?.ownerDocument?.defaultView.Element; - return Boolean(Element) && (target instanceof Element || target instanceof window.Element); + const Element = target?.ownerDocument?.defaultView?.Element; + return ( + (Boolean(Element) && + (target instanceof Element || target instanceof window.Element)) || + (typeof target === "object" && target?.constructor?.name?.endsWith("Element")) + ); }, }, slots: {