const linkText = linkTextParts.join('');
const targetURL = new URL(link.href);
+ if (targetURL.protocol === 'magnet:') {
+ return !linkText.startsWith('magnet:');
+ }
+
+ if (targetURL.protocol === 'xmpp:') {
+ return !(linkText === targetURL.href || 'xmpp:' + linkText === targetURL.href);
+ }
+
// The following may not work with international domain names
if (textMatchesTarget(linkText, targetURL.origin, targetURL.host) || textMatchesTarget(linkText.toLowerCase(), targetURL.origin, targetURL.host)) {
return false;
if (tagLinks && isLinkMisleading(link)) {
// Add a tag besides the link to display its origin
+ const url = new URL(link.href);
const tag = document.createElement('span');
tag.classList.add('link-origin-tag');
- tag.textContent = `[${new URL(link.href).host}]`;
+ switch (url.protocol) {
+ case 'xmpp:':
+ tag.textContent = `[${url.href}]`;
+ break;
+ case 'magnet:':
+ tag.textContent = '(magnet)';
+ break;
+ default:
+ tag.textContent = `[${url.host}]`;
+ }
link.insertAdjacentText('beforeend', ' ');
link.insertAdjacentElement('beforeend', tag);
}