Как перезагрузить CSS без перезагрузки страницы с помощью JavaScript?
При работе с CSS вы могли столкнуться с ситуациями, когда вы внесли некоторые изменения в таблицу стилей и вам пришлось выполнить жесткую перезагрузку, чтобы увидеть изменения, отраженные в вашем браузере. Или, может быть, стиль зависит от некоторого взаимодействия с пользователем, и вы не хотите каждый раз загружать страницу жестко. Иногда вы не хотите потерять изменения, сделанные с помощью инструментов разработчика, а просто хотите перезагрузить CSS. В других случаях CSS так упорно кешируется, что даже обновление всей страницы не помогает. Сегодня мы узнаем, как перезагрузить CSS, не перезагружая всю страницу.
Используя JavaScript, мы можем добавлять новый номер версии к пути к файлу CSS в качестве параметра запроса каждый раз, когда вы обновляете CSS. Добавляя другой параметр запроса к URL-адресу, браузер обрабатывает его как уникальный URL-адрес и кэширует его отдельно, позволяя загрузить обновленную версию. Вы можете прикрепить эту функцию к кнопке (или комбинации клавиш клавиатуры в качестве сочетания клавиш), которая перезагружает CSS при каждом нажатии. Мы можем использовать текущую дату и время в качестве номера версии, поскольку это всегда будет новая и уникальная строка.
- Синтаксис: Добавьте созданный файл CSS в формате ниже.
<link rel = "stylesheet" type = "text / css" href = "css / style.css? version = #">
- index.html с кодом JavaScript:
<!DOCTYPE html>
<
html
>
<
head
>
<
link
rel
=
"stylesheet"
type
=
"text/css"
href
=
"style.css"
/>
</
head
>
<
body
>
<
h1
>GeeksforGeeks</
h1
>
<
b
>Reloding CSS without relodaing the page</
b
>
<
br
><
br
>
<
button
onclick
=
"refreshCSS()"
>
Refresh CSS
</
button
>
<
script
>
refreshCSS = () => {
let links = document.getElementsByTagName('link');
for (let i = 0; i <
links.length
; i++) {
if (links[i].getAttribute('rel') == 'stylesheet') {
let
href
=
links
[i].getAttribute('href')
.split('?')[0];
let
newHref
=
href
+ '?version='
+ new Date().getMilliseconds();
links[i].setAttribute('href', newHref);
}
}
}
</script>
</
body
>
</
html
>
- CSS файл style.css:
/* Coloring h1 tag */
h
1
{
color
:
green
;
}
/* Button styling */
button {
width
:
200px
;
background-color
:
purple
;
color
:
black
;
border-radius:
10px
;
padding
:
10px
;
font-weight
:
bold
;
}
- Выход:
- Вы можете добавить эту функцию как букмарклет JavaScript в свой браузер, который будет перезагружать CSS каждый раз, когда вы нажимаете на него.
javascript: (function () { let links = document.getElementsByTagName ('ссылка'); for (let i = 0; i <links.length; i ++) { if (links [i] .getAttribute ('rel') == 'stylesheet') { пусть href = links [i] .getAttribute ('href'). split ('?') [0]; пусть newHref = href + '? version =' + новая дата (). getMilliseconds (); console.log (newHref) ссылки [я] .setAttribute ('href', newHref); } } }) ();