Распространение переменной во всех гиперссылках на странице (странная проблема) ⇐ Jquery
-
Гость
Распространение переменной во всех гиперссылках на странице (странная проблема)
Поэтому мне нужно распространить определенную переменную в строке запроса на все гиперссылки на странице, за исключением некоторых из них. В этом примере переменная — «referralCode» (я также ищу в существующих ссылках просто «referral=" и не добавляю, если он уже есть).
Для этого я использую JavaScript на старом веб-сайте WebForms ASP.NET.
Кажется, JavaScript работает отлично, но для ссылок, которые выглядят так, это совершенно странно, и я совершенно ошарашен, почему: что бы здесь ни было< /код>
Подобные ссылки на веб-сайте используются для открытия модальных окон для воспроизведения видео, открытия/закрытия ссылок-гармошек и т. д., поэтому распространение переменной на эти ссылки портит и ломает ссылки, поэтому JavaScript должен игнорировать их.
Проблема в том, что... к этим ссылкам добавляется переменная, хотя селектор в JavaScript игнорирует их, И Я ПОДТВЕРЖДАЮ ЭТО, просматривая все выходные данные "console.log" и не видя ни одной из этих ссылок. ="#" ссылки в них. Я просто в тупике.
Мой JavaScript:
$(document).ready(function () { // игнорируем ссылки, начинающиеся с «#» или «javascript:» const $links = $('a').not('[href^="#"]').not('[href^="javascript:"]'); const targetDomain = 'localhost'; const targetDomainClient = "мойдомен.com"; const ReferralCodeQuerystringParameter = "ReferralCode"; var ReferralCode = $("#referral-code").text(); // это просто скрытый с кодом, здесь нет проблем если (код ссылки) { constvariableToAdd = ReferralCodeQuerystringParameter + "=" + ReferralCode; $links.each(функция () { константа $ссылка = $(это); пусть href = $link.attr('href'); если (!href) { возвращаться; } console.log(href); // это не выводит никаких hrefs "#" if (href && (href.includes(targetDomain) || href.includes(targetDomainClient) || href.startsWith('/'))) { if (!href.includes(variableToAdd) && !href.includes('referral=')) { если (href.includes('?')) { href += `&${variableToAdd}`; } еще { href += `?${variableToAdd}`; } $link.attr('href', href); } } }); } }); Вот HTML-код пары таких ссылок «#»:
вещи лол, что Как я уже сказал, эти hrefs "#" никогда не отображаются в выводе "console.log" для коллекции $links, что для меня означает, что они даже не обрабатываются JavaScript. Я пробовал использовать строгий JavaScript (без jQuery), обязательно используйте вкладку «Частное», чтобы избежать кэширования JS (и подтвердил, что файл .js, включенный на страницу, правильный), пробовал браузеры Edge и Chrome... все равно происходит. Моя голова вот-вот взорвется.
Поэтому мне нужно распространить определенную переменную в строке запроса на все гиперссылки на странице, за исключением некоторых из них. В этом примере переменная — «referralCode» (я также ищу в существующих ссылках просто «referral=" и не добавляю, если он уже есть).
Для этого я использую JavaScript на старом веб-сайте WebForms ASP.NET.
Кажется, JavaScript работает отлично, но для ссылок, которые выглядят так, это совершенно странно, и я совершенно ошарашен, почему: что бы здесь ни было< /код>
Подобные ссылки на веб-сайте используются для открытия модальных окон для воспроизведения видео, открытия/закрытия ссылок-гармошек и т. д., поэтому распространение переменной на эти ссылки портит и ломает ссылки, поэтому JavaScript должен игнорировать их.
Проблема в том, что... к этим ссылкам добавляется переменная, хотя селектор в JavaScript игнорирует их, И Я ПОДТВЕРЖДАЮ ЭТО, просматривая все выходные данные "console.log" и не видя ни одной из этих ссылок. ="#" ссылки в них. Я просто в тупике.
Мой JavaScript:
$(document).ready(function () { // игнорируем ссылки, начинающиеся с «#» или «javascript:» const $links = $('a').not('[href^="#"]').not('[href^="javascript:"]'); const targetDomain = 'localhost'; const targetDomainClient = "мойдомен.com"; const ReferralCodeQuerystringParameter = "ReferralCode"; var ReferralCode = $("#referral-code").text(); // это просто скрытый с кодом, здесь нет проблем если (код ссылки) { constvariableToAdd = ReferralCodeQuerystringParameter + "=" + ReferralCode; $links.each(функция () { константа $ссылка = $(это); пусть href = $link.attr('href'); если (!href) { возвращаться; } console.log(href); // это не выводит никаких hrefs "#" if (href && (href.includes(targetDomain) || href.includes(targetDomainClient) || href.startsWith('/'))) { if (!href.includes(variableToAdd) && !href.includes('referral=')) { если (href.includes('?')) { href += `&${variableToAdd}`; } еще { href += `?${variableToAdd}`; } $link.attr('href', href); } } }); } }); Вот HTML-код пары таких ссылок «#»:
вещи лол, что Как я уже сказал, эти hrefs "#" никогда не отображаются в выводе "console.log" для коллекции $links, что для меня означает, что они даже не обрабатываются JavaScript. Я пробовал использовать строгий JavaScript (без jQuery), обязательно используйте вкладку «Частное», чтобы избежать кэширования JS (и подтвердил, что файл .js, включенный на страницу, правильный), пробовал браузеры Edge и Chrome... все равно происходит. Моя голова вот-вот взорвется.
Мобильная версия