diff --git a/src/share/content_renderer.js b/src/share/content_renderer.js index 8c1dbee10..1870f039b 100644 --- a/src/share/content_renderer.js +++ b/src/share/content_renderer.js @@ -44,8 +44,10 @@ function renderIndex(result) { const rootNote = shaca.getNote(shareRoot.SHARE_ROOT_NOTE_ID); for (const childNote of rootNote.getChildNotes()) { - const href = childNote.getLabelValue("shareExternal") ?? `./${childNote.shareId}`; - result.content += `
  • ${childNote.escapedTitle}
  • `; + const isExternalLink = childNote.hasLabel("shareExternalLink"); + const href = isExternalLink ? childNote.getLabelValue("shareExternalLink") : `./${childNote.shareId}`; + const target = isExternalLink ? `target="_blank" rel="noopener noreferrer"` : ""; + result.content += `
  • ${childNote.escapedTitle}
  • `; } result.content += ''; @@ -85,8 +87,13 @@ function renderText(result, note) { const noteId = notePathSegments[notePathSegments.length - 1]; const linkedNote = shaca.getNote(noteId); if (linkedNote) { - const href = linkedNote.getLabelValue("shareExternal") ?? `./${linkedNote.shareId}`; + const isExternalLink = linkedNote.hasLabel("shareExternalLink"); + const href = isExternalLink ? linkedNote.getLabelValue("shareExternalLink") : `./${linkedNote.shareId}`; linkEl.setAttribute("href", href); + if (isExternalLink) { + linkEl.setAttribute("target", "_blank"); + linkEl.setAttribute("rel", "noopener noreferrer"); + } linkEl.classList.add(`type-${linkedNote.type}`); } else { linkEl.removeAttribute("href"); diff --git a/src/views/share/page.ejs b/src/views/share/page.ejs index 52e891dbc..9d95a155a 100644 --- a/src/views/share/page.ejs +++ b/src/views/share/page.ejs @@ -32,7 +32,7 @@ <%- header %> <%= note.title %> - +
    <% if (note.parents[0].noteId !== '_share' && note.parents.length !== 0) { %> @@ -62,9 +62,14 @@ <% } %>