diff --git a/static/skin/viewer.js b/static/skin/viewer.js index f9b5ba88e..23507109c 100644 --- a/static/skin/viewer.js +++ b/static/skin/viewer.js @@ -290,12 +290,23 @@ function isExternalUrl(url) { || url.startsWith("https:"); } +function getRealHref(target) { + // In case of wombat in the middle, wombat will rewrite the href value to the original url (external link) + // This is not what we want. Let's ask wombat to not rewrite href + const old_no_rewrite = target._no_rewrite; + target._no_rewrite = true; + const target_href = target.href; + target._no_rewrite = old_no_rewrite; + return target_href; +} + function onClickEvent(e) { const iframeDocument = contentIframe.contentDocument; const target = matchingAncestorElement(e.target, iframeDocument, "a"); if (target !== null && "href" in target) { - if ( isExternalUrl(target.href) ) { - const possiblyBlockedLink = blockLink(target.href); + const target_href = getRealHref(target); + if (isExternalUrl(target_href)) { + const possiblyBlockedLink = blockLink(target_href); if ( e.ctrlKey || e.shiftKey ) { // The link will be loaded in a new tab/window - update the link // and let the browser handle the rest. diff --git a/test/server.cpp b/test/server.cpp index 86171cd4a..3c1e85954 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -75,7 +75,7 @@ const ResourceCollection resources200Compressible{ { DYNAMIC_CONTENT, "/ROOT%23%3F/skin/taskbar.css" }, { STATIC_CONTENT, "/ROOT%23%3F/skin/taskbar.css?cacheid=e014a885" }, { DYNAMIC_CONTENT, "/ROOT%23%3F/skin/viewer.js" }, - { STATIC_CONTENT, "/ROOT%23%3F/skin/viewer.js?cacheid=201653b8" }, + { STATIC_CONTENT, "/ROOT%23%3F/skin/viewer.js?cacheid=948df083" }, { DYNAMIC_CONTENT, "/ROOT%23%3F/skin/fonts/Poppins.ttf" }, { STATIC_CONTENT, "/ROOT%23%3F/skin/fonts/Poppins.ttf?cacheid=af705837" }, { DYNAMIC_CONTENT, "/ROOT%23%3F/skin/fonts/Roboto.ttf" }, @@ -320,7 +320,7 @@ R"EXPECTEDRESULT( - + const blankPageUrl = root + "/skin/blank.html?cacheid=6b1fa032";