Open external links in OSM notes in a new tab

This commit is contained in:
Jesse Ashmore
2020-08-10 20:47:36 +01:00
parent 248b29983d
commit 519fca2e32
+22 -1
View File
@@ -68,7 +68,12 @@ export function uiNoteComments() {
mainEnter
.append('div')
.attr('class', 'comment-text')
.html(function(d) { return d.html; });
.html(function(d) { return d.html; })
.selectAll('a')
.filter(isExternalLink)
.attr('rel', 'noopener')
.attr('rel', 'nofollow')
.attr('target', '_blank');
comments
.call(replaceAvatars);
@@ -110,6 +115,22 @@ export function uiNoteComments() {
}
// A quick test for external links. 'this' is the node passed in by selection.filter()
function isExternalLink() {
try {
// Possibly more domains to be added
const internalDomains = ['.openstreetmap.org', '.osm.org'];
const hostname = new URL(this.href).hostname;
// If the link's hostname comprises any internalDomains, return false
return internalDomains.findIndex((d) => hostname.includes(d)) === -1;
} catch (error) {
// If anything goes wrong, bail and assume not external (original behaviour)
return false;
}
}
noteComments.note = function(val) {
if (!arguments.length) return _note;
_note = val;