Судя по комментариям Хуана, два тега body не подходят для этого.https://developer.mozilla.org/en-US/docs/Web/HTML/Element#Sectioning_root. Вместо этого вы должны использовать родительские оболочки.
<div class="parent">
<a id="link2" href="https://click.com" target="_top"></a>
</div>
Использование window.location
поможет вам разобрать текущий URL, чтобы вы могли правильно делать то, что вам нужно.
Я бы запросил элемент с атрибутом href window.location.href
, а затем получил .parentElement
, чтобы получить прямого родителя.
const url = window.location.href;
const targetParent = document.querySelector('.parent a[href="' + url + '"]').parentElement;
targetBody.style.display = "block";
Это не будет работать, если <a>
находится где-то глубже,В таком случае я бы сказал добавить еще один атрибут для родителя, чтобы мы могли напрямую запросить его.
<div class="parent" url="https://click.com">
<a id="link2" href="https://click.com" target="_top"></a>
</div>
затем
const url = window.location.href;
const targetParent = document.querySelector('.parent[url="' + url + '"]').parentElement;
Если в вашем URL есть другие дополнительные строки, такие как http://click.com?id=foobar
тогда это тоже не сработает.Вам нужно будет вручную объединить другие свойства из window.location
, чтобы вы могли получить только то, что вам нужно.
const baseDomainWithSubPath = window.location.origin + "/" + window.location.pathname;
const baseDomain = window.location.origin;
const subDomain = window.location.pathname;