Как вызвать функцию на веб-сайте из фонового скрипта в расширении Chrome? - PullRequest
0 голосов
/ 27 марта 2019

Я хочу выполнить функцию в Chrome-Tab из фонового скрипта.

Я хочу показать текущий URL-адрес youtube-video в моем файле popup.html, но по какой-то причине мой javascript-код не работает ожидаемым образом.

popup.js

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete' && tab.active) {
    chrome.extension.getBackgroundPage().chrome.tabs.executeScript(null, {
        file: 'payload.js'
    });;
  }
})

chrome.runtime.onMessage.addListener(function (message) {
    document.getElementById('pagetitle').innerHTML = message;
});

payload.js

setInterval(oneSecondFunction, 1000);

function oneSecondFunction() {
    if (!document.hidden) {
        video = document.getElementById("movie_player");
        if(video) {
            chrome.runtime.sendMessage("Video playing: " + video.getVideoUrl());
        } else {
            chrome.runtime.sendMessage("No video playing!");
        }
    }
}

Если вы вставите document.getElementById("movie_player").getVideoUrl() в chrome-console, вы получите URL-адрес видео (если вы находитесь на YouTube). Код, показанный выше, должен также дать мне URL-адрес видео, но вместо этого приводит к этой ошибке: Uncaught TypeError: video.getVideoUrl is not a function

Мне не нужен другой способ получения текущего URL-адреса вкладки, так как я также хочу выполнить некоторые другие функции для этого объекта (которые всегда говорят мне, что они не являются функциями, хотя они могут выполняться в консоли Chrome) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...