Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2025, 22:20
Аспирант
Отправить личное сообщение для firep91613 Посмотреть профиль Найти все сообщения от firep91613
 
Регистрация: 24.10.2023
Сообщений: 64

Теги к постам
Ребят, написал скрипт, для прицепления тегов к постам - https://jsbin.com/losuzaxore/edit?js,output

У меня вопрос: вот когда нажимаешь в браузере назад, а потом обратно, то у оригинального селекта опшены остаются выбраными как и до нажатия назад. А сами эти теги вставленные в .selected__items исчезают. Что нужно делать? Сразу искать у оригинального селекта все выбраные опшены и вставлять в .selected__items? Или можно как-то еще это регулировать?
Ответить с цитированием
  #2 (permalink)  
Старый 19.06.2025, 21:30
Аспирант
Отправить личное сообщение для firep91613 Посмотреть профиль Найти все сообщения от firep91613
 
Регистрация: 24.10.2023
Сообщений: 64

Ребят, неужели никто с этим не сталкивался?

https://adminlte.io/themes/v3/pages/forms/advanced.html

Как они делают, что все что выбранно в элементах форм при нажатии "Назад" - "Вперед" в браузере остается так же как и было? А при перезагрузке страницы все обнуляется? В стораджи ничего не пишется...
Ответить с цитированием
  #3 (permalink)  
Старый 19.06.2025, 22:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,267

Сообщение от firep91613
Как они делают
Это лучше у них и спросить...
Ответить с цитированием
  #4 (permalink)  
Старый 20.06.2025, 11:44
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,823

Это же, вроде как, особенность работы самого браузера.
Хром старается сохранить данные введенные в поля при перемещении пользователя по истории вкладки при синхронной загрузке этих страниц.
Ответить с цитированием
  #5 (permalink)  
Старый 20.06.2025, 22:04
Аспирант
Отправить личное сообщение для firep91613 Посмотреть профиль Найти все сообщения от firep91613
 
Регистрация: 24.10.2023
Сообщений: 64

Сообщение от Nexus Посмотреть сообщение
Это же, вроде как, особенность работы самого браузера.
Хром старается сохранить данные введенные в поля при перемещении пользователя по истории вкладки при синхронной загрузке этих страниц.
Ок. Вот я выделил теги и нажал "Назад" и "Вперед". На скрине они выделены, как и было.



Я пытаюсь вставить эти выделенные опшены в этот блок, который для юзеров показывает, что выбрано (class="selected__items"). Вот скрипт:
document.addEventListener('DOMContentLoaded', e => {
    const select = document.getElementById('tag_id');
    const length = select.options.length;

    for (let i = 0; i < length; i++) {
        console.log(select.options[i].selected); // все время false

        if (select.options[i].selected) {
            selectedItems.append(createTag(i, select.options[i].innerText));
        }
    }
});

Но консоль все время пишет false...

Что же делать? Как же быть?
Ответить с цитированием
  #6 (permalink)  
Старый 20.06.2025, 22:04
Аспирант
Отправить личное сообщение для firep91613 Посмотреть профиль Найти все сообщения от firep91613
 
Регистрация: 24.10.2023
Сообщений: 64

Сообщение от ksa Посмотреть сообщение
Это лучше у них и спросить...
Ага, так они и скажут )
Ответить с цитированием
  #7 (permalink)  
Старый Вчера, 00:38
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,823

Сообщение от firep91613
Что же делать? Как же быть?
select.value пробовали читать?

Сообщение от firep91613
Ага, так они и скажут )
Можете не спрашивать, а посмотреть реализацию в оф. репозиториях: Chromium, Firefox.
Ответить с цитированием
  #8 (permalink)  
Старый Вчера, 11:20
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,775

Сообщение от firep91613
Что же делать? Как же быть?
Вместо события DOMContentLoaded в данном случае надо использовать событие 'pageshow'
window.addEventListener("pageshow", (ev) =>{
    const select = document.getElementById('tag_id');
    const length = select.options.length;

    for (let i = 0; i < length; i++) {
        console.log(select.options[i].selected); // все время false

        if (select.options[i].selected) {
            selectedItems.append(createTag(i, select.options[i].innerText));
        }
    }
});

Оно возникает, когда страница уже появилась и данные были восстановлены из внутреннего кеша (если они были запомнены)
Можно и проверять были ли данные восстановлены из кеша или страница полностью загрузилась заново.
ev.persisted === true, если страница была восстановлена из кеша.
Подробнее
https://developer.chrome.com/docs/we...ycle-api?hl=ru
https://developer.mozilla.org/en-US/...pageshow_event
Ответить с цитированием
  #9 (permalink)  
Старый Вчера, 16:42
Аспирант
Отправить личное сообщение для firep91613 Посмотреть профиль Найти все сообщения от firep91613
 
Регистрация: 24.10.2023
Сообщений: 64

voraa,
спасибо, это помогло. Правда я совсем забыл, что на админке висит middleware, который запрещает браузеру кэшировать страницы. Поэтому e.persisted всегда false. Но тем не менее работает как надо.
Ответить с цитированием
  #10 (permalink)  
Старый Вчера, 16:45
Аспирант
Отправить личное сообщение для firep91613 Посмотреть профиль Найти все сообщения от firep91613
 
Регистрация: 24.10.2023
Сообщений: 64

Помогите еще курсор сделать на всю высоту. У меня никак не получается... Я пробовал увеличивать font-size, но получается криво все.



https://jsbin.com/zakemetefi/edit?css,output
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти и удалить все теги, если в них пусто ixiz Events/DOM/Window 6 12.12.2023 16:58
Выбранные теги select2 serrrgggeee Общие вопросы Javascript 0 15.05.2016 10:06
Удалить все HTML теги из <META> Mukhtar Events/DOM/Window 4 13.06.2013 19:44
Jquery .html() вырезает теги ART-DELI jQuery 7 18.04.2011 11:49
Как текст из responseText преобразовать в теги? Бобр AJAX и COMET 24 26.02.2010 04:37