Я использую onHistoryStateUpdated
в моем фоновом скрипте для проверки навигации по Youtube.
chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) {
console.log(details);
// regex checks for youtube watch page
if ((details.url).match(regex)) {
// match if its youtube watch page
// do something
} else {
// do something else
}
});
Итак, я набираю youtube.com
в омнибаре Google, и я попадаю на домашнюю страницу YouTube. Этот шаг ничего не выводит в консоль. Но потом, когда я нажимаю на любое видео. Я получаю 3 результата, зарегистрированных в моей консоли.
ВЫХОД
frameId: 0
parentFrameId: -1
processId: 1215
tabId: 365
timeStamp: 1596402400782.9841
transitionQualifiers: []
transitionType: "link"
url: "https://www.youtube.com/"
Снова тот же объект
frameId: 0
parentFrameId: -1
processId: 1215
tabId: 365
timeStamp: 1596402400817.138
transitionQualifiers: []
transitionType: "link"
url: "https://www.youtube.com/"
, а затем результат, который я ожидал
frameId: 0
parentFrameId: -1
processId: 1215
tabId: 365
timeStamp: 1596402400829.095
transitionQualifiers: []
transitionType: "link"
url: "https://www.youtube.com/watch?v=c3guRIWSZiQ"
__proto__: Object
Почему я получаю первые 2 результата?
Я не получаю эти результаты при переходе от одного видео к другому.
Другой случай (который я проверил и понял) :
Если я перейду на главную страницу Youtube со страницы просмотра, нажав на youtube lo go, а затем на другую страницу просмотра, я получу 2 результата
- страницу просмотра на главную страницу YouTube (нажав lo go) - один для этого (что я понимаю)
- youtube на любую страницу просмотра - один для этой (а не 3 результата, которые я получил в первую очередь). Я тоже это понимаю
Думаю, это происходит только при первом обновлении истории. (впервые перешел с youtube.com
на youtube.com/watch?v=*
). Я прав? Я был бы признателен, если бы кто-нибудь смог пролить больше света на это поведение.
Мне нужно это понять, потому что я хочу выполнить какое-то действие, когда я перехожу с youtube.com
на youtube.com/watch?v=*
только в первый раз. Как я могу это сделать?