Открыть внешние ссылки в новом окне

Материал из JQuery

Перейти к: навигация, поиск

Чтобы переход по ссылке осуществлялся с открытием нового окна, достаточно добавить ссылке атрибут target и задать ему значение blank. Однако, для некоторых DOCTYPE, использование такого подхода не позволит создать документ, который пройдет валидацию W3C. Приведенный ниже код решает задачу, добавляя обработчик "клика" только тем ссылкам на странице, в атрибуте href которых содержится имя хоста, отличное от того, на котором используется скрипт. Для проверки используется регулярное выражение. Внутри обработчика "клика" предотвращается действие по умолчанию, предупреждается всплытие события и открывается новое окно.

$('a').each(function() {
   var a = new RegExp('/' + window.location.host + '/');
   if(!a.test(this.href)) {
       $(this).click(function(event) {
           event.preventDefault();
           event.stopPropagation();
           window.open(this.href, '_blank');
       });
   }
});

Код, приведенный выше написан в предположении, что изначально неизвестно, какие ссылки внешние. Если же предположить, что внешние ссылки находятся внутри элемента с идентификатором #content и начинаются с http://, то весь код можно уместить в одну строку:

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

Используемые методы jQuery