Есть ли способ открыть все ссылки <a href> на странице в новых окнах? - программирование

Есть ли способ открыть все ссылки <a href> на странице в новых окнах?

У меня есть несколько ссылок <a href=".html">, и я хочу, чтобы все они открывались в новых окнах.

Я знаю, что могу выполнить поиск и заменить все, чтобы добавить target="_blank" ко всем моим ссылкам <a href="...">.

Тем не менее, есть ли быстрый способ, такой как установка стиля CSS или добавление некоторого кода JavaScript, для достижения той же цели?

4b9b3361

Ответ 1

Если у вас есть страница, состоящая только из ссылок, рассмотрите <base target="_blank">. Это открывает каждую ссылку в новом окне (но также включает цели форм, если не переопределено с помощью <form target="_self">.

Как показали другие, без изменения источника HTML вы можете использовать Javascript для перебора всех тегов <a> и добавления атрибута target или добавления прослушивателя событий , который динамически устанавливает целевой атрибут.

Ответ 2

Если у вас есть jQuery, это просто

$("a").attr("target", "_blank");

Или обычный Javascript

var links = document.links;
for (var i = 0; i < links.length; i++) {
     links[i].target = "_blank";
}

В соответствии с предложением @Lekensteyn, без Javascript (добавлено для полноты)

<base target="_blank">.

Ответ 3

CSS: нет.
JavaScript: делегировать событие щелчка, которое добавляет атрибут target="_blank" при щелчке ссылки.

document.body.addEventListener(function(e) {
    if (e.target.nodeName.toUpperCase() === 'A' && e.target.href) {
        e.target.target = '_blank';
    }
}, true);

Примечание. Если элемент <a> содержит другие элементы, возможно, вы захотите пройтись по дереву, чтобы выяснить, был ли нажат элемент привязки:

document.body.addEventListener(function(e) {
    var target = e.target;
    do {
        if (target.nodeName.toUpperCase() === 'A' && target.href) {
            target.target = '_blank';
            break;
        }
    } while (target = target.parentElement);
}, true);

Или, если вы любитель jQuery:

$('body').on('click', 'a', function(e) {
    e.target.target = '_blank';
});

Ответ 4

да, вы можете добавить атрибут с JS ко всем ссылкам в HTML-документе с именем 'target' со значением '_blank';)

Вы также можете открыть заменить href всех ссылок с URL на javascript: openInWindow (url), используя this, и написать функцию в JS, которая откроет новое окно и установит его местоположение в url ;) Google поможет вам с обоими.