Как изменить атрибут 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 в моем примере.
Можно ли это исправить?
Ответы
Ответ 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);
}