понимание поведения webNavigation.onHistoryStateUpdated () - PullRequest
0 голосов
/ 03 августа 2020

Я использую 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 результата

  1. страницу просмотра на главную страницу YouTube (нажав lo go) - один для этого (что я понимаю)
  2. youtube на любую страницу просмотра - один для этой (а не 3 результата, которые я получил в первую очередь). Я тоже это понимаю

Думаю, это происходит только при первом обновлении истории. (впервые перешел с youtube.com на youtube.com/watch?v=*). Я прав? Я был бы признателен, если бы кто-нибудь смог пролить больше света на это поведение.

Мне нужно это понять, потому что я хочу выполнить какое-то действие, когда я перехожу с youtube.com на youtube.com/watch?v=* только в первый раз. Как я могу это сделать?

...