Здесь много проблем
- JavaScript строки не могут иметь новых строк, литералы шаблона могут (см. Далее)
- Javascript строки, которые нужны в кавычках одного вида такие же кавычки, например
"this is not "possible""
, но "this is \"possible\""
- . Вы НЕ хотите использовать регулярные выражения для HTML
. Здесь я беру все ссылки, начинающиеся с http и установите цель
Я предполагаю, что у вас нет таких ссылок, как a href="http_is_a_protocol.html"
Если у вас есть такая возможность, вам нужно использовать более умный селектор или посмотреть мою вторую версию
// Here I use a template literal backtick to contain newlines and quotes
const text = `There are many variations of passages of Lorem Ipsum available,
<a href='https://stackoverflow.com/'>stackoverflow</a>
but the majority have suffered alteration in some form, by injected humor, or randomized words which
<a href="/page2">page 2</a>
don't look even slightly believable.
If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.
All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the`;
const div = document.createElement("div")
div.innerHTML = text;
[...div.querySelectorAll("a[href^=http")].forEach(function(link) {
link.target="_blank"; // or link.setAttribute("target","_blank")
document.body.appendChild(div);
})
Более скучный на случай, если вам нужно проверить каждую ссылку - он будет вызывать все, что не на том же сервере, внешний
// Here I use a template literal backtick to contain newlines and quotes
const text = `There are many variations of passages of Lorem Ipsum available,
<a href='https://stackoverflow.com/'>stackoverflow</a>
but the majority have suffered alteration in some form, by injected humor, or randomized words which
<a href="/page2">page 2</a>
don't look even slightly believable.
If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.
All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the`;
const div = document.createElement("div")
div.innerHTML = text;
[...div.querySelectorAll("a[href]")].forEach(function(link) {
const url = new URL(link.href);
if (url.hostname != location.hostname) link.target="_blank";
document.body.appendChild(div);
})