Подтвердить что ты не робот

JQuery add target = "_ blank" для исходящей ссылки

Мне нужна помощь для создания jquery script:)
У меня есть ссылка на мой HTML.

<a href="#" onclick="location.href='http://google.com'; return false;">Google</a>
<a href="/">Home</a>
<a href="#" onclick="location.href='http://www.gusdecool.com/'; return false;">Home</a>
<a href="contactus.html">Contact Us</a>

И теперь я хочу, чтобы jQuery проверил всю ссылку на моей странице. если эта ссылка находится за пределами моего сервера (мой сервер gusdecool.com). Затем добавьте target="_blank". и результат будет таким:

<a href="#" onclick="location.href='http://google.com'; return false;" target="_blank">Google</a>
<a href="/">Home</a>
<a href="#" onclick="location.href='http://www.gusdecool.com/'; return false;">Home</a>
<a href="contactus.html">Contact Us</a>
4b9b3361

Ответ 1

предполагая, что все внешние ссылки начинаются с http://, вы можете сделать это:

$('a[href^="http://"]').not('a[href*=gusdecool]').attr('target','_blank');

Ответ 2

$('a[href^=http]:not([href^=http://www.gusdecool.com/])').attr('target','_blank');

Конечно, это работает только в том случае, если все внешние ссылки начинаются с протокола http. Вы должны адаптировать этот код для удовлетворения ваших потребностей (таких как ссылки без протоколов или с различными протоколами).

ОБНОВЛЕНИЕ:

$('a[href^=http]:not([href^=http://www.gusdecool.com],[href^=http://gusdecool.com])')
    .add('a[href^=www]:not([href^=www.gusdecool.com])')
        .attr('target','_blank');

Он выбирает все элементы a, у которых есть атрибут href, начиная с адреса веб-страницы (с протоколом или без него) и не указывая на адрес вашего сайта и не изменяя атрибут target на _blank.

Ответ 3

$('a').each(function() {
   var a = new RegExp('/' + window.location.host + '/');
   if (!a.test(this.href)) {
      $(this).attr("target","_blank");
   }
});

Это было из css-tricks.com, похоже, работает очень хорошо.

Ответ 4

Эта функция кажется более простой, если у вас есть субдомен:

$('a').attr('target', function() {
  if(this.host == location.host) return '_self'
  else return '_blank'
});

Ответ 5

jQuery(document).ready(function(){
    target_luar();
});    
function target_luar(){
    try{
        if(top.location != location) {
            jQuery("a[href^='http']")
              .not("[href*='"+location.host+"']")
              .attr('target','_blank');
        }
    } catch(err) { }
}

Демо: Демонстрация внешней ссылки jQuery

Ответ 6

Глобальная функция для открытия внешних ссылок в новом окне:

$(function(){ // document ready

    $("a").filter(function () {
        return this.hostname && this.hostname !== location.hostname;
    }).each(function () {
        $(this).attr({
            target: "_blank",
            title: "Visit " + this.href + " (click to open in a new window)"
        });
    });

});

Ответ 7

Вы можете использовать функцию jQuery $.each для итерации по всем тэгам Anchor, выполнить необходимую проверку и установить атрибут "target", используя $(this).attr( "target", "_ blank" );

Пример (не проверен, но должен работать):

$('a').each(function(index) {
    var link = $(this).attr("href");
    if(link.substring(0,7) == "http://")
        $(this).attr("target", "_blank");
});

Шай.

Ответ 8

Проверьте каждый linkobject $(link).attr( "href" ), если он начинается с http://то есть его исходящая ссылка (?). Затем назначьте .attr( "target", "_blank" ).

$(a).function(){
    if($(this).attr("href").substring(0,3) == "http" && <!-- CHECK ITS NOT YOUR SITE URL -->){
       $(this).attr("target", "_blank"); 
    }
};

Надеюсь, что это поможет.

Ответ 9

Здесь скрипка, демонстрирующая ответ с использованием raw JS (не jQuery): http://jsfiddle.net/Xwqmm/

И вот код:

var as = document.getElementsByTagName('a');
var re = /^https?:\/\/([^\/]*)\//;
for (var i = 0, l = as.length; i < l; i++) {
    var href = as[i].href;
    var matches = href.match(re);
    if (matches[1] && matches[1] != "gusdecool.com") {
        as[i].setAttribute("target","_blank");
    }
}

Ответ 10

Вы можете использовать filter -

$("a").filter(function () {
    return this.indexOf('http://') > -1 && this.indexOf('gusdecool') == -1 
}).attr("target","_blank");  

Ответ 11

Попробуйте:

$('a[href^="http://"]')
        .not('a[href*='+ location.hostname +']')
        .attr('target','_blank');

Ответ 12

<div id="myLinks"><a href="#" onclick="location.href='http://google.com'; return false;">Google</a><a href="/">Home</a><a href="#" onclick="location.href='http://www.gusdecool.com/'; return false;">Home</a>
<a href="contactus.html">Contact Us</a></div>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#myLinks a').attr('target', '_blank');
});
</script>