Как смоделировать воспроизведение видео в Netflix без перезагрузки страницы? - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь написать расширение chrome, где я хочу иметь возможность начать воспроизведение видео Netflix с главной страницы без необходимости переходить по URL-адресу видео, используя что-то вроде window.location.href = '...', что приведет к появлению страницы перезагрузить. Я хочу сделать это без перезагрузки страницы, потому что скрипт содержимого расширения chrome вводится повторно каждый раз, когда происходит перезагрузка страницы, чего я не хочу делать каждый раз.

Например, если вы go зайдете на веб-сайт netflix и нажмете кнопку mov ie, видео начнет воспроизводиться без полной перезагрузки страницы. Это говорит о том, что изменения в DOM инициируются через JavaScript? Кто-нибудь знает, как это сделать?

Я попытался просмотреть некоторые из кодов Javascript, чтобы посмотреть, есть ли функция, которую я мог бы вызвать, чтобы вызвать какое-то событие, но код был слишком сложным, чтобы понять , Поэтому другой подход, о котором я подумал, состоял в том, чтобы сделать fetch с URL-адресом видео, которое я хочу воспроизвести, а затем просто заменить содержимое элемента body на содержимое извлеченного html. Например:

fetch("https://www.netflix.com/watch/70174779")
  .then(function(response) {
    response.text().then(function(html) {
      var parser = new DOMParser();
      var doc = parser.parseFromString(html, "text/html");
      document.getElementsByTagName(
        "body"
      )[0].innerHTML = doc.getElementsByTagName("body")[0].innerHTML;
    });
  })
  .catch(function(err) {
    console.log("Fetch Error :-S", err);
  });

Однако, когда я запускаю это в консоли Chrome DevTools, это просто приводит к пустой странице. Я тоже не получаю никаких полезных ошибок. Я также попытался заменить все содержимое html:

fetch("https://www.netflix.com/watch/70174779")
  .then(function(response) {
    response.text().then(function(html) {
      document.open();
      document.write(html);
      document.close();
    });
  })
  .catch(function(err) {
    console.log("Fetch Error :-S", err);
  });

Но это также не сработало, и я получил кучу ошибок в консоли.

...