Я хочу выполнить функцию в 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) .