Skip to content

Commit c7d3a38

Browse files
Handling of external links with target="_blank"
External links with target="_blank" attribute are opened in a new tab/window. Also included metaKey (Command key under Mac) in the list of click modifiers that make the link to be opened in a new tab.
1 parent 6b74395 commit c7d3a38

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

Diff for: static/skin/viewer.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,13 @@ function setHrefAvoidingWombatRewriting(target, url) {
345345
target._no_rewrite = old_no_rewrite;
346346
}
347347

348+
function linkShouldBeOpenedInANewWindow(linkElement, mouseEvent) {
349+
return linkElement.getAttribute("target") == "_blank"
350+
|| mouseEvent.ctrlKey
351+
|| mouseEvent.shiftKey
352+
|| mouseEvent.metaKey /* on Macs */;
353+
}
354+
348355
function onClickEvent(e) {
349356
const iframeDocument = contentIframe.contentDocument;
350357
const target = matchingAncestorElement(e.target, iframeDocument, "a");
@@ -358,7 +365,7 @@ function onClickEvent(e) {
358365

359366
if (isExternalAppUrl || isExternalUrl(target_href)) {
360367
const possiblyBlockedLink = blockLink(target_href);
361-
if ( e.ctrlKey || e.shiftKey ) {
368+
if ( linkShouldBeOpenedInANewWindow(target, e) ) {
362369
// The link will be loaded in a new tab/window - update the link
363370
// and let the browser handle the rest.
364371
setHrefAvoidingWombatRewriting(target, possiblyBlockedLink);

Diff for: test/server.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ const ResourceCollection resources200Compressible{
7575
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/taskbar.css" },
7676
{ STATIC_CONTENT, "/ROOT%23%3F/skin/taskbar.css?cacheid=80d56607" },
7777
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/viewer.js" },
78-
{ STATIC_CONTENT, "/ROOT%23%3F/skin/viewer.js?cacheid=8ca16f13" },
78+
{ STATIC_CONTENT, "/ROOT%23%3F/skin/viewer.js?cacheid=fdec37a7" },
7979
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/fonts/Poppins.ttf" },
8080
{ STATIC_CONTENT, "/ROOT%23%3F/skin/fonts/Poppins.ttf?cacheid=af705837" },
8181
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/fonts/Roboto.ttf" },
@@ -327,7 +327,7 @@ R"EXPECTEDRESULT( <link type="text/css" href="./skin/kiwix.css?cacheid=2158fa
327327
<script type="text/javascript" src="./skin/polyfills.js?cacheid=a0e0343d"></script>
328328
<script type="module" src="./skin/i18n.js?cacheid=071abc9a" defer></script>
329329
<script type="text/javascript" src="./skin/languages.js?cacheid=ee7d95b5" defer></script>
330-
<script type="text/javascript" src="./skin/viewer.js?cacheid=8ca16f13" defer></script>
330+
<script type="text/javascript" src="./skin/viewer.js?cacheid=fdec37a7" defer></script>
331331
<script type="text/javascript" src="./skin/autoComplete/autoComplete.min.js?cacheid=1191aaaf"></script>
332332
const blankPageUrl = root + "/skin/blank.html?cacheid=6b1fa032";
333333
<label for="kiwix_button_show_toggle"><img src="./skin/caret.png?cacheid=22b942b4" alt=""></label>

0 commit comments

Comments
 (0)