Browse Source

Use regex to match external links

merge-requests/14/head
Ivan Fonseca 7 years ago
parent
commit
fe6fe64191
No known key found for this signature in database GPG Key ID: 95A9C856EC788689
  1. 20
      tildes/static/js/behaviors/external-links-new-tabs.js

20
tildes/static/js/behaviors/external-links-new-tabs.js

@ -1,7 +1,17 @@
$.onmount('[data-js-external-links-new-tabs]', function() {
// Make links in the text open in a new tab
$(this).find(
'a[href^="http"]' + // Select external links
':not([href*="tildes.net"])' // But not links to tildes
).attr('target', '_blank');
/* Open external links in topic, comment, and message text in
* new tabs.
*
* The regex matches links starting with "/" or "tildes.net", which are
* "internal" links to Tildes pages (posts, topics, users, etc). All
* other links are considered "external" and open in a new tab.
*/
let re = /^((?!\/).)$|^https?:\/\/((?!tildes\.net).).*$/gm;
// Loop through links
$(this).find('a').each(function() {
// Check if href is external
if (re.exec(this.href) !== null) {
$(this).attr('target', '_blank');
}
});
});
Loading…
Cancel
Save