JavaScript — открыть все внешние ссылки, открытые в новой вкладке, кроме домена

Открыть все внешние ссылки, открыть в новой вкладке, кроме домена

В том же ключе, что и в ответе techfoobar, вы можете создать список доменов, которые следует оставить в том же окне. Вы можете сделать это более надежным способом, используя регулярные выражения. Если вы просто выполните прямую проверку indexOf (), вы пропустите ссылки, которые имеют совпадающие субдомены, но не совпадают с доменами, хотя вы можете пропустить ‘$’, если хотите совпадать с именем в любом месте строки href.

Эта реализация должна делать то, что вы хотите, и есть минимальные изменения в коде, который вам нужен.

 $(document).ready(function() { //populate this list with whatever domain names you want, the //$ sign matches the end of the string, only top level domains are affected var whiteList = [/google.com/$/, /stackoverflow.com/$/]; $("a[href^=http]").each(function(){ if(this.href.indexOf(location.hostname) == -1) { //check if the href of the current link matches any of our patterns var href = this.href; if(whiteList.filter(function(x){return x.test(href)}).length == 0) { $(this).attr({ target: "_blank", title: "Opens in a new window" }); } } }) }); 

В этом примере все ссылки на google.com и stackoverflow.com также будут открыты на существующей странице.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector