From a1c1dfd1efd66c7949d6f217266e5fe80e8c6e5f Mon Sep 17 00:00:00 2001 From: Maciej Przepióra Date: Thu, 17 Jan 2019 11:46:49 +0100 Subject: Fix #11369 (#11403) Clear contents of iframe clone that is in a Window so that when it's reattached to DOM we don't get 404 --- .../com/vaadin/client/ui/window/WindowConnector.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'client/src/main/java') diff --git a/client/src/main/java/com/vaadin/client/ui/window/WindowConnector.java b/client/src/main/java/com/vaadin/client/ui/window/WindowConnector.java index aa244c7888..feb34e502e 100644 --- a/client/src/main/java/com/vaadin/client/ui/window/WindowConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/window/WindowConnector.java @@ -326,6 +326,23 @@ public class WindowConnector extends AbstractSingleComponentContainerConnector } return newEl; } + + if ("iframe".equalsIgnoreCase(old.getTagName()) + && old.hasAttribute("src") + && old.getAttribute("src").contains("APP/connector")) { + // an iframe reloads when reattached to the DOM, but + // unfortunately, when newEl is reattached, server-side + // resource (e.g. generated PDF) is already gone, so this will + // end up with 404, which might be undesirable. + // Instead of the resource that is not available anymore, + // let's just use empty iframe. + // See + // https://github.com/vaadin/framework/issues/11369 + // for details of the issue this works around + Element newEl = old.cloneNode(false).cast(); + newEl.setAttribute("src", "about:blank"); + return newEl; + } } Node res = node.cloneNode(false); if (node.hasChildNodes()) { -- cgit v1.2.3