Подтвердить что ты не робот

Как изменить атрибут href с помощью JavaScript после открытия ссылки в новом окне?

У меня есть ссылка на моей странице

<a href="#" onclick="location.href='http://google.com'; return false;" id="mylink" onclick="changeLink();" target="_blank">google</a>

И цель состоит в том, чтобы перейти по этой ссылке (открытие в новой вкладке) и изменить ее атрибуты (на предыдущей вкладке). Я имею в виду, что мы открываем google.com в новой вкладке, и если мы посмотрим на ссылку, она обновилась.

Я пробовал этот код JS

function changeLink(){
    document.getElementById("mylink").href = "http://facebook.com";
    document.getElementById("mylink").innerHTML = "facebook";
    }

Но это также меняет цель новой вкладки. Вместо открытия Google он открывает Facebook в моем примере.

Можно ли это исправить?

4b9b3361

Ответ 1

Ваш onclick срабатывает до href, поэтому он изменится до открытия страницы, вам нужно заставить функцию обрабатывать открытие окна следующим образом:

function changeLink() {
    var link = document.getElementById("mylink");

    window.open(
      link.href,
      '_blank'
    );

    link.innerHTML = "facebook";
    link.setAttribute('href', "http://facebook.com");

    return false;
}

Ответ 2

Вы можете задержать свой код с помощью setTimeout для выполнения после нажатия

function changeLink(){
    setTimeout(function() {
        var link = document.getElementById("mylink");
        link.setAttribute('href', "http://facebook.com");
        document.getElementById("mylink").innerHTML = "facebook";
    }, 100);
}

Ответ 3

Заменить

onclick="changeLink();"

по

onclick="changeLink(); return false;"

чтобы отменить действие по умолчанию

Ответ 4

например, попробуйте следующее:

<a href="http://www.google.com" id="myLink1">open link 1</a><br/> <a href="http://www.youtube.com" id="myLink2">open link 2</a>


    document.getElementById("myLink1").onclick = function() {
    window.open(
    "http://www.facebook.com"
        );
        return false;
      };

      document.getElementById("myLink2").onclick = function() {
    window.open(
    "http://www.yahoo.com"
        );
        return false;
      };

Ответ 5

Вы можете изменить это на странице load.

Мое намерение состоит в том, что когда страница переходит к функции load, переключите ссылки (текущая ссылка в требуемой)

Ответ 6

Есть ли недостаток в использовании прослушивателя mousedown для изменения атрибута href с новым местоположением URL, а затем позволяет браузеру выяснить, куда его следует перенаправить?

Пока все работает нормально для меня. Хотите знать, каковы ограничения с этим подходом?

// Simple code snippet to demonstrate the said approach
const a = document.createElement('a');
a.textContent = 'test link';
a.href = '/haha';
a.target = '_blank';
a.rel = 'noopener';

a.onmousedown = () => {
  a.href = '/lol';
};

document.body.appendChild(a);
}