|
Метки: очистка ручная отмена |
(не показаны 44 промежуточные версии этого же участника) |
Строка 1: |
Строка 1: |
| // Ассинхронная загрузка страницы. Убирает всякие мерцания, показывая сразу готовую страницу. Костыль? Да. Работает? Ну вроде Clueless
| |
| document.addEventListener('click', function(event) {
| |
| var link = event.target.closest('a');
| |
| if (link && link.href && link.href.indexOf(window.location.origin) !== -1) {
| |
| event.preventDefault();
| |
|
| |
|
| var xhr = new XMLHttpRequest();
| |
| xhr.onreadystatechange = function() {
| |
| if (xhr.readyState === XMLHttpRequest.DONE) {
| |
| if (xhr.status === 200) {
| |
| document.body.innerHTML = xhr.responseText;
| |
|
| |
| window.history.pushState({}, '', link.href);
| |
| }
| |
| }
| |
| };
| |
| xhr.open('GET', link.href, true);
| |
| xhr.send();
| |
| }
| |
| });
| |
|
| |
| // Заставляем вперёд/назад работать.
| |
| window.addEventListener('popstate', function(event) {
| |
| var xhr = new XMLHttpRequest();
| |
| xhr.onreadystatechange = function() {
| |
| if (xhr.readyState === XMLHttpRequest.DONE) {
| |
| if (xhr.status === 200) {
| |
| document.body.innerHTML = xhr.responseText;
| |
| }
| |
| }
| |
| };
| |
| xhr.open('GET', window.location.href, true);
| |
| xhr.send();
| |
| });
| |
|
| |
|
| |
| document.addEventListener('click', function(event) {
| |
| var link = event.target.closest('a');
| |
| if (link && link.href && link.href.indexOf(window.location.origin) !== -1) {
| |
| event.preventDefault();
| |
|
| |
| var xhr = new XMLHttpRequest();
| |
| xhr.onreadystatechange = function() {
| |
| if (xhr.readyState === XMLHttpRequest.DONE) {
| |
| if (xhr.status === 200) {
| |
| document.body.innerHTML = xhr.responseText;
| |
|
| |
| window.history.pushState({}, '', link.href);
| |
| }
| |
| }
| |
| };
| |
| xhr.open('GET', link.href, true);
| |
| xhr.send();
| |
| }
| |
| });
| |
|
| |
| // Кнопочка для переключения темы на светлую и обратно.
| |
| $(document).ready(function() {
| |
| var container = document.getElementById("p-personal");
| |
| if (container) {
| |
| var checkbox = document.createElement("input");
| |
| checkbox.type = "checkbox";
| |
| checkbox.id = "theme-toggle";
| |
|
| |
| var label = document.createElement("label");
| |
| label.htmlFor = "theme-toggle";
| |
| label.id = "theme-button";
| |
|
| |
| container.parentNode.insertBefore(checkbox, container);
| |
| container.parentNode.insertBefore(label, container);
| |
| }
| |
|
| |
| var isLightTheme = localStorage.getItem("isLightTheme");
| |
| if (isLightTheme === "true") {
| |
| document.documentElement.classList.add('light');
| |
| } else {
| |
| document.documentElement.classList.remove('light');
| |
| }
| |
|
| |
| $("#theme-toggle").change(function() {
| |
| toggleTheme();
| |
| });
| |
| });
| |
|
| |
| function toggleTheme() {
| |
| var isLightTheme = document.documentElement.classList.toggle('light');
| |
| localStorage.setItem("isLightTheme", isLightTheme);
| |
| }
| |