вставить контентный скрипт, когда страница была изменена при помощи history.pushState и ajax call
Я столкнулся с проблемой вставки на страницу скрипта контента, который был изменен при помощи history.pushState и вызова ajax. Я нашелпохожая тема в stackoverflow, но это решение не работает для меня (это решение было в использовании chrome.webNavigation.onHistoryStateUpdated и события "popstate").
Вот фрагмент моего манифеста:
"content_scripts": [
{
"matches": ["https://vk.com/audios*", "https://vk.com/al_audio.php*"],
"js": ["jquery-2.1.4.min.js", "getListOfSongs.js"]
}
]
chrome.webNavigation.onHistoryStateUpdated работает только если я перехожу на другую страницу, если я перехожу на одну и ту же страницу много раз подряд, ничего не происходит. Например: это работает, когда
1) Перейти кhttps://vk.com/audios* - открытие страницы в первый раз или перезагрузка
2) Перейти кhttps://vk.com/some_other_page - звонок ajax
3) Перейти кhttps://vk.com/audios* - вызов ajax
Не работает когда
1) Перейти кhttps://vk.com/audios* - открытие страницы в первый раз или перезагрузка
2) Снова иди кhttps://vk.com/audios* - вызов ajax, в данный момент контентный скрипт не внедряется
3) Снова иди кhttps://vk.com/audios* - вызов ajax, в этот момент скрипт содержимого не внедряется и т. д.
Каждый раз, когда я нажимаю на одну и ту же страницу во второй раз, генерируется следующий запрос:
https://vk.com/al_audio.php?__query=audios********* & _ исх = left_nav & _smt = аудио% 3A2 & ал = -1 & al_id = ******** & _ rndVer = 60742
(параметры запроса могут отличаться)
ТакжеJQuery .ajaxComplete не ловит никаких событий в этом случае.
И pushState не запускает событие «popstate», поэтому я не могу использовать событие window.onpopstate
Я мог бы использоватьchrome.webNavigation.onDOMContentLoaded а такжеchrome.webNavigation.onCompleted но когда я перезагружаю страницу, эти события происходят более одного раза, поэтому сценарий будет вводиться более одного раза.
Каково лучшее решение для этого случая?