Добавить ? и еще одна строка для всех исходящих ссылок - PullRequest
0 голосов
/ 25 января 2020

В этом коде я изменяю все исходящие ссылки. Я добавил "?" успешно. Я также хочу добавить динамическую c строку, которую я получаю с URL, но не удалось. Вот мой код:

fetch('https://httpbin.org/encoding/utf8')
  .then((response) => {
    return response.text();
  })
  .then((text) => {
    document.getElementById("MyFetchedString").innerHTML = text.slice(0, 10);
      });
document.addEventListener( "DOMContentLoaded", modify_outbound_links);

function modify_outbound_links(){
    anchors = document.getElementsByTagName('a');
    for (let i = 0; i < anchors.length; i++) {
        let p = anchors[i].href;
        if (p.indexOf('example.com') === -1) {
        //How do i append the fetchedText here? 
            anchors[i].href = p + (p.indexOf('?') != -1 ? "&" : "?") + 'FetchedText'; 
        }
    }
}
<!DOCTYPE html>
<html>
<head>
  <title>My Website</title>
  </head>

<body>

  <h2>My First Web Page</h2>
  <p>My First Paragraph.</p>

  Modify all outbound links.<br>

 <p><a href="https://google.com/">Google.com</a></p>
<p><a href="https://yahoo.com/">Yahoo.com</a></p>
<p><a href="https://example.com/">mydomain.com</a></p>

<p id="MyFetchedString"></p>

</body>

Как мне добавить выбранный текст здесь:

anchors[i].href = p + (p.indexOf('?') != -1 ? "&" : "?") + '**I WANT THE FETCHED TEXT HERE**';

1 Ответ

2 голосов
/ 26 января 2020

Требуемую функциональность можно получить, выполнив эти 4 шага -

  1. Удалите событие при загрузке документа, поскольку оно не требуется, если включена выборка.

document.addEventListener ("DOMContentLoaded", modify_outbound_links) ;

Этот прослушиватель событий мешает извлечению. Его можно удалить.

Извлечение извлеченного текста в переменную с именем fetchedText в 'запрос на выборку' Pass fetchedText как аргумент modify_outbound_links function Добавить fetchedText к исходящей ссылке внутри modify_outbound_links функции

Рабочий код:

<!DOCTYPE html>
<html>
  <head>
    <title>My Website</title>
  </head>
  <body>
    <h2>My First Web Page</h2>
    <p>My First Paragraph.</p>
    Modify all outbound links.
    <br>
    <p><a href="https://google.com/">Google.com</a></p>
    <p><a href="https://yahoo.com/">Yahoo.com</a></p>
    <p><a href="https://example.com/">mydomain.com</a></p>
    <p id="MyFetchedString"></p>
    <script>
      fetch('https://httpbin.org/encoding/utf8')
      .then((response) => {
            return response.text();
      })
      .then((text) => {
            console.log("Response from httpbin = " + text)
            var fetchedText = text.slice(4, 16)
            document.getElementById("MyFetchedString").innerHTML = fetchedText
            modify_outbound_links(fetchedText)
      })

      function modify_outbound_links(fetchedText) {
          anchors = document.getElementsByTagName('a')
          for (let i = 0; i < anchors.length; i++) {
            let p = anchors[i].href
            if (p.indexOf('example.com') === -1) {
              //How do i append the fetchedText here?
              anchors[i].href = p + (p.indexOf('?') != -1 ? "&" : "?") + fetchedText;
            }
          }
      }
      </script>
  </body>
</html>

Вывод

Моя первая веб-страница Мой первый абзац.

Изменить все исходящие ссылки.

Google.com (ссылка = https://google.com/?Unicode%20Demo)

Yahoo.com (ссылка = https://yahoo.com/?Unicode%20Demo)

mydomain.com (ссылка = https://example.com/)

Демонстрация Unicode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...