Как открыть все внешние ссылки в новом окне (javascript) (страница комментариев 6)

15 октября 2012. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

Открыть иль не открыть — вот в чём вопрос…

Вы ведёте блог? Ставите ссылки на другие сайты? Если «да» и «да», то в каком окне/вкладке вы их открываете — в том же или в новом? 99,(9)% вебмастеров открывают внешние ссылки в новом окне (а некоторые открывают в новом даже ссылки на самого себя — что, с моей точки зрения, явный перебор). Ничтожно малое исключение составляют особо принципиальные.

[expand]

Отступление об особо принципиальных. Читать полностью »

83 комментария на «Как открыть все внешние ссылки в новом окне (javascript)»
  1. Катя (1 комментарий)

    Спасибо! Вставила код в файл custom.js в указанную вами конструкцию, но не работает. Что делаю не так?

    Ответить на этот комментарий
    • Княгиня (660 комментариев)

      Заочно не могу сказать, надо смотреть глазами. Типовые причины такие:

          

      1. не подключёна или неправильно подключёна библиотека jQuery;
      2.   

      3. забыли обёртку jQuery(document).ready{};
      4.   

      5. потеряли запятую, скобку или кавычку;
      6.   

      7. в файле есть ошибка в другой функции, не связанной с открытием вкладок;
      8.   

      9. на сайте уже используется другая библиотека и не хватает конфликторазводящей функции.

      У вас может быть что-то своё, что не вошло в этот список.

      Ответить на этот комментарий
      • Катя

        А для этой функции нужна была отдельная обёртка? я вставила в уже имеющуюся конструкцию, которая выглядела точно также. Может, в этом проблема?

        Ответить на этот комментарий
        • Княгиня (660 комментариев)

          Да нет, в одно ready можно вставить все события. Но следить при этом за правописанием.

          Ответить на этот комментарий
  2. Алфавит (2 комментария)

    Очень всё доступно и верно написано. Когда-то долго мучались не могли разобраться. Спасибо автору!

    Ответить на этот комментарий
  3. Konstantin (2 комментария)

    Здравствуйте! У меня с Вашим скриптом картинки на сайте почему-то при нажатии стали не увеличиваться в размерах, а открываться ещё одна пустая вкладка и предложение загрузить на компьютер. Не знаете как от этого избавиться? Не удаляя сам скрипт естественно, потому что свою роль он выполняет:)

    Ответить на этот комментарий
  4. Konstantin (2 комментария)

    Мой коммент выше, быстро удалось решить проблему, исключил ещё одну внутреннюю ссылку.

    Ответить на этот комментарий
  5. Medok (2 комментария)

    Очень удобно! Но для меня сложновато, к сожалению. =-O Мы пока лучше по-старому, через target_blank.

    Ответить на этот комментарий
  6. 310 (1 комментарий)

    Предложенное решение не сработало. А вот так — да:

    jQuery(document).ready(function() {
    jQuery(‘a[href^=»http://»], a[href^=»https://»]’).not(‘a[href^=»http://мой.домен/»]’).attr(‘target’,’_blank’);
    });

    Ответить на этот комментарий
    • Княгиня (660 комментариев)

      Если проблема решилась, то хорошо. А почему не сработало первое — надо смотреть конкретику.

      Ответить на этот комментарий
  7. Наталия (3 комментария)

    После перевода сайта на https все ссылки стали открываться в новом окне, и внешние и внутренние. Как сделать так, чтобы внутренние по-прежнему открывались в текущем?

    Ответить на этот комментарий
    • Княгиня (660 комментариев)

      Хороший вопрос. Надо вместо:

      not('a[href^="http://yoursite.ru/"]')

      писать:

      not('a[href^="http://yoursite.ru/"], a[href^="https://yoursite.ru/"]')

      Или попробовать приём с добавлением target, описанный в комментариях.

      Ответить на этот комментарий
      • Наталия (3 комментария)

        Да, спасибо, так всё работает как надо.
        А в список до not не надо добавлять a[href^="https"] ?

        Ответить на этот комментарий
        • Княгиня (660 комментариев)

          Нет, потому что символ ^ означает «начинается с». С http начинаются и http, и https.

          Ответить на этот комментарий

Есть что сказать? Не молчим!

Используйте теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" code=""> <ul> <li> <ol> .

Комментарии короче 200 символов публикуются без активной ссылки. Пробелы не учитываются.

Ссылки с комментариев dofollow. Ознакомьтесь, пожалуйста, с правилами dofollow-комментирования. Кто не читает, тот сам себе враг.