#javascript #accessibility
#язык JavaScript #Специальные возможности
Вопрос:
Я работаю над тем, чтобы сделать некоторые карты более доступными. Для этого мне нужно использовать JavaScript, чтобы взять одну ссылку из заголовка карточки и применить ее ко всем элементам внутри карточки.
Он работает относительно хорошо.
Проблема, однако, в том, что он открывает ссылку на новой вкладке каждый раз, когда я нажимаю. Не только когда я удерживаю CMD (Mac).
Я знаю, что некоторым пользователям (таким как я) это нравится. Но это выше поведения по умолчанию, и я хотел бы узнать, как найти способ заставить window.open(url) просто следовать поведению по умолчанию, которое пользователь привык использовать.
Я пытался:
window.open(url, "_blank") window.open(url, "_self") window.open(url, "_top")
JavaScript ниже:
function cardLinks() { let cards = document.querySelectorAll(".card"); cards.forEach(function (box) { let link = box.querySelector("a"); if (link) { let url = link.getAttribute("href"); box.addEventListener("click", function () { window.open(url) }); } }); } document.addEventListener("DOMContentLoaded", function () { if ("querySelector" in document) { cardLinks(); } });
Если вы читали это до сих пор, причина, по которой это важно (по крайней мере для меня), заключается в том, что наличие отдельных тегов ссылок на элементе HTML-карты является кошмаром для пользователей специальных возможностей. Так как им нужно переходить по нескольким ссылкам. Наличие обработчика событий на всех дочерних элементах карты означает, что он хорошо работает для пользователей специальных возможностей и визуальных пользователей.
Надеюсь, кто-нибудь сможет помочь.
Комментарии:
1. можете ли вы попробовать window.open(» url.com»,»_self» ), пожалуйста, обратите внимание, что Url-адрес должен быть дополнен протоколом
2. Спасибо @ManuJanardhanan, 🙂 Протокол не входит в
let url = link.getAttribute("href");
3. затем попробуйте location.href
4. Я думаю, что самым простым решением было бы поместить всю карту в
lt;agt;
.5. Может быть, попробовать
link.click()
?