Но если не планируете использование якорных ссылок, то и не стоит рассматривать тег <a>.
Дизайн завязан на a, в cssидет класс а-ля “.обертка a”(там куча свойств) и нужно будет дублировать тоже самое для span, если переделывать. И к тому же сейчас все нормально работает так как мне хотелось бы, но вот нюанс, и старый холивар из разряда это должна быть кнопка не делайте из ссылки кнопки и кнопки — это не ссылки и т.п. :)
Моё ИМХО личное мнение если уж w3cдо лампочки, то думаю и поисковикам тоже, понимаю, что это неправильно, но думаю, что это вообще ни на что не влияет, но естественно я могу ошибаться.
Не href=”#”, оно будет пытаться скролить страницу к верху вроде, а href=”” пустой обновлять, это все ещё хуже. Но есть еще один баг, когда убираешь href, когда подносишь мышку палец нажимания пропадает, хоть это и фиксится курсор поинтером, но странно.
Snake800#: По большому счёту да. Есть разница в том, что метод в jQuery ready сработает в любом случае, а DOMContentLoaded может быть не вызван, если событие навешано уже после вызванного браузером события загрузки.
А можно ли сказать что эти методы - document.addEventListener('DOMContentLoaded' и jQuery(document).ready,
Это тоже самое, если бы я разместил скрипты в footer’е, перед закрывающим тегом body. По сути тоже сначала загрузится страница, а потом скрипты?
Подскажите, это document.addEventListener('DOMContentLoaded', по сути тоже самое что и это jQuery(document).ready? То есть ждет ожидания построения/загрузки DOM и только после него начинает что-то делать?
оставить в <head>, осталное в подвал вместе с остальными скриптами.
Я вот думаю отдельный jsфайл сделать, только для переключения темы, или все остальное обернуть в jQuery(document).ready – ну типа чтобы оно потом грузилось.
Достаточно в head. Проверено. И да, хорошим тоном является при первом визите устанавливать тему на основе дефолтных настроек юзера.
Да похоже вы правы по поводу head, это вроде работает(даже если скрипт ниже css), я прощелкал 100500 раз, вроде не мелькает вообще. Не, про хороший тон я хочу забыть, т.к. я хочу всего лишь самую простую на белом свете кнопку переключения тем, а она итак превращается в какого-то монстра.
Кстати пару слов о переносе скрипта из футера в хеад, там тоже приколы интересные:
JavaScriptговорит мне, что мальчик хочешь на кнопку нажать, а ничего не выйдет, теперь скрипт выше кнопки и поэтому кнопки как бы и нет ХА-ХА – nullтебе в ребро :), и в догонку ошибку - Uncaught TypeError: Cannot read properties of null, а ведь до этого все работало когда скрипт был в футере под кнопкой.
Хорошо JavaScriptты не с тем связался, помощь с вестсайдвутангклана подоспела, делаю как этот чувак советует - https://sebhastian.com/javascript-cannot-read-properties-of-null/, ведь мне нужно чтобы теперь кнопка работала со скриптом который в хеад, до кнопки и этот чел советует это:
btnEl?.addEventListener("click", () => alert("You clicked a button!"));
});
И это действительно работает, я не знаю почему и как, но перенос скрипта в хеад и изменение кода как тот чел советовал действительно сработал.
И все вроде бы работает, но все это мне жутко не нравится, ни то что скрипт теперь в хеад, сам скрипт какой-то страшный, плюс 100500 переменных в CSS, лучше бы я ссылку дал на расширение к браузеру DarkReader, для этих любителей bdsmтемных тем, то им в MS-DOSсиний экран не нравится, то теперь белый, ну вот они же книги наверное читают, все книги 99% черное на белом, они же не говорят, дайте нам белое на черном, мы же по ночам читаем глазки напрягаем, это же бред какой-то :-), ладно это я шучу :-)
divv#: Если сайт на php, то лучше сразу атрибут добавлять, например в body. Тоесть js использовать для установки и удаления атрибута и запись в куки, а php нужен для установки атрибута сразу при загрузки страницы, чтобы ничего не моргало.
Сайт то на php, но есть нюанс, используется плагин кэширования и страницы отдаются как бы готовыми. Может это как-то влияет?
Для html 5 теперь необязательный атрибут.
Но если не планируете использование якорных ссылок, то и не стоит рассматривать тег <a>.
Дизайн завязан на a, в css идет класс а-ля “.обертка a”(там куча свойств) и нужно будет дублировать тоже самое для span, если переделывать. И к тому же сейчас все нормально работает так как мне хотелось бы, но вот нюанс, и старый холивар из разряда это должна быть кнопка не делайте из ссылки кнопки и кнопки — это не ссылки и т.п. :)
Моё ИМХО личное мнение если уж w3c до лампочки, то думаю и поисковикам тоже, понимаю, что это неправильно, но думаю, что это вообще ни на что не влияет, но естественно я могу ошибаться.Лучше все же добавить href="#" и т.п.
По большому счёту да. Есть разница в том, что метод в jQuery ready сработает в любом случае, а DOMContentLoaded может быть не вызван, если событие навешано уже после вызванного браузером события загрузки.
А можно ли сказать что эти методы - document.addEventListener('DOMContentLoaded' и jQuery(document).ready,
Это тоже самое, если бы я разместил скрипты в footer’е, перед закрывающим тегом body. По сути тоже сначала загрузится страница, а потом скрипты?Можно разделить скрипт на 2 части. Вот это -
оставить в <head>, осталное в подвал вместе с остальными скриптами.Достаточно в head. Проверено. И да, хорошим тоном является при первом визите устанавливать тему на основе дефолтных настроек юзера.
Да похоже вы правы по поводу head, это вроде работает(даже если скрипт ниже css), я прощелкал 100500 раз, вроде не мелькает вообще. Не, про хороший тон я хочу забыть, т.к. я хочу всего лишь самую простую на белом свете кнопку переключения тем, а она итак превращается в какого-то монстра.
Кстати пару слов о переносе скрипта из футера в хеад, там тоже приколы интересные:
JavaScript говорит мне, что мальчик хочешь на кнопку нажать, а ничего не выйдет, теперь скрипт выше кнопки и поэтому кнопки как бы и нет ХА-ХА – null тебе в ребро :), и в догонку ошибку - Uncaught TypeError: Cannot read properties of null, а ведь до этого все работало когда скрипт был в футере под кнопкой.
Хорошо JavaScript ты не с тем связался, помощь с вестсайдвутангклана подоспела, делаю как этот чувак советует - https://sebhastian.com/javascript-cannot-read-properties-of-null/, ведь мне нужно чтобы теперь кнопка работала со скриптом который в хеад, до кнопки и этот чел советует это:
document.addEventListener('DOMContentLoaded', () => {
let btnEl = document.getElementById("my-button");
btnEl?.addEventListener("click", () => alert("You clicked a button!"));
});
И это действительно работает, я не знаю почему и как, но перенос скрипта в хеад и изменение кода как тот чел советовал действительно сработал.
И все вроде бы работает, но все это мне жутко не нравится, ни то что скрипт теперь в хеад, сам скрипт какой-то страшный, плюс 100500 переменных в CSS, лучше бы я ссылку дал на расширение к браузеру Dark Reader, для этих любителей bdsm темных тем, то им в MS-DOS синий экран не нравится, то теперь белый, ну вот они же книги наверное читают, все книги 99% черное на белом, они же не говорят, дайте нам белое на черном, мы же по ночам читаем глазки напрягаем, это же бред какой-то :-), ладно это я шучу :-)Ну тоже естественно, потому что исходный CSS срабатывает до JS.
можно добавить body visibility hidden а при установке темы visibility visible
Если сайт на php, то лучше сразу атрибут добавлять, например в body. Тоесть js использовать для установки и удаления атрибута и запись в куки, а php нужен для установки атрибута сразу при загрузки страницы, чтобы ничего не моргало.
Посмотрел на pikabu, там эти ошибки и предупреждения генерируются тысячами, даже при прокрутке сайта, ну и при смене темы, походу это стандарт.
Вы правы это нормально, не стоило и переживать…