Форум программистов, компьютерный форум, киберфорум
JavaScript: API
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 26.10.2020
Сообщений: 15
Chrome Extension

Как запустить контент скрипт после ajax обновления страницы

26.11.2020, 01:21. Показов 3612. Ответов 7

Студворк — интернет-сервис помощи студентам
У меня есть расширение, нажимающее на кнопки, и есть сайт, в котором страницы обновляются, как я понял, через ajax (url меняется, меняется содержимое, но вкладка не обновляется), и мой контент скрипт не запускается после такого обновления (запускается, если обновить вкладку). Как запустить контент скрипт после этого обновления и загрузки всей страницы?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2020, 01:21
Ответы с готовыми решениями:

Скрипт AJAX отправляет на другую страницу вместо обновления страницы
Вот код AJAX: $(function() { $("#send").click(function(){ var author = $("#author").val(); var message =...

Скрипт по разному срабатывает после обновления страницы
Здравствуйте, у меня есть следующая проблема: скрипты по разному срабатывают после обновления страницы, или вообще не срабатывают. Вот...

Скрипт срабатывает только после обновления страницы
Здравствуйте, у меня появилась проблема и хотелось бы посоветоваться с знающими людьми. Суть такова, мой скрипт срабатывает только после...

7
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
26.11.2020, 12:40
Лучший ответ Сообщение было отмечено Lerto как решение

Решение

Lerto, судя по всему речь идет об одностраничном приложении (SPA) и там отследить изменения в адресной строке не так просто. Но вот на SO есть такой вопрос javascript - Event when window.location.href changes - Stack Overflow
Вот этот ответ вполне рабочий(проверено)
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var oldHref = document.location.href;
 
window.onload = function() {
 
    var
         bodyList = document.querySelector("body")
 
        ,observer = new MutationObserver(function(mutations) {
 
            mutations.forEach(function(mutation) {
 
                if (oldHref != document.location.href) {
 
                    oldHref = document.location.href;
 
                    /* Changed ! your code here */
 
                }
 
            });
 
        });
 
    var config = {
        childList: true,
        subtree: true
    };
 
    observer.observe(bodyList, config);
 
};
код своего скрипта надо вставить туда где написано /* Changed ! your code here */
1
0 / 0 / 0
Регистрация: 26.10.2020
Сообщений: 15
26.11.2020, 12:52  [ТС]
В пример приведу гитхаб, переход по разделам репозитория происходит без обновления вкладки https://github.com/apex/log
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
26.11.2020, 12:56
Цитата Сообщение от Lerto Посмотреть сообщение
В пример приведу
А зачем пример? Не сработало что ли?

Добавлено через 1 минуту
Lerto, проверил на этом примере. Все работает.
0
0 / 0 / 0
Регистрация: 26.10.2020
Сообщений: 15
26.11.2020, 13:07  [ТС]
Спасибо большое, работает, только скрипт запускается до загрузки всей страницы, сразу после перехода.
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
26.11.2020, 13:38
Lerto, можно таймаут поставить, там от начала до конца загрузки времени не ного пройдёт.
0
0 / 0 / 0
Регистрация: 26.10.2020
Сообщений: 15
26.11.2020, 13:40  [ТС]
Там страница может грузиться секунду, а может и 5 секунд, таймаут не очень подойдет, можно это как-нибудь по другому сделать?
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
26.11.2020, 15:00
Цитата Сообщение от Lerto Посмотреть сообщение
Там страница может грузиться секунду, а может и 5 секунд, таймаут не очень подойдет, можно это как-нибудь по другому сделать?
Ну вообще, по идее, если контент уже начал прорисовываться на странице (а отслеживается именно это), то он все-таки уже загружен и нужно только дождаться завершения вставки его в на страницу. Это не должно занять много времени. Другой вопрос - если для завершения формирования страницы отправляется несколько запросов на сервер и нужно дождаться завершения их всех. Но тут браузер уже не сможет определить, какой именно момент нужно считать окончанием загрузки, так что ожидать, что у него есть какое-то событие типа DOMContentLoaded для такого случая не следует. Тут опять-таки придется отслеживать изменения на странице и уже самостоятельно решать когда процесс можно считать завершенным и я думаю, что для каждой конкретной страницы этот момент будет определяться по-разному.
Собственно приведенное выше решение тоже основано на отслеживании изменений, то есть, если на странице произошло изменение, то проверяется изменился ли адрес. Код нужно дополнить для случаев, когда адрес не меняется, но меняется что-то на странице и тут для каждой конкретной страницы нужно проверять, загрузился ли какой-то элемент, находящийся ниже того, с чем ты собираешься работать и, в случае положительного ответа, вызывать свой скрипт. Естественно, придется добавить какие-то флаги, чтобы быть уверенным, что обработка происходит только один раз и т. д. Это все сложновато, но, как мне кажется, вполне реализуемо.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.11.2020, 15:00
Помогаю со студенческими работами здесь

Следующий скрипт срабатывает только после обновления страницы
var cssel = document.createElement("style"); cssel.type = "text/css"; cssel.innerHTML = "::selection { background-color: #3399ff; }...

Запустить скрипт после загрузки страницы
Проблема древняя, но всё ещё актуальная. И мне самому удивительно, что я не могу решить её своими силами... но тем не менее... простейший...

Как защитить скрипт от обновления страницы?
Есть скрипт который выполняет какое-либо действие. Но при просто обновлении страницы скрипт снова выполняется. Каким образом можно это...

Загрузить контент страницы через Ajax
Мне нужно загрузить статью на сайт с помощью Ajax, в инете есть следующий пример: Создадим 3 файла. index.html <html> ...

После обновления страницы на время съезжают картинки, после полной загрузки страницы все восстанавливается
Помогите разобраться.. не пойму, из-за чего съезжают картинки услуг в две колонки.. после полной загрузки, становится все на место... сайт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru