我想从后台脚本在chrome-tab中执行功能。
我想在popup.html文件中显示当前的youtube-video-url,但是由于某些原因,我的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控制台中,则会获得视频网址(如果您在youtube上)。上面显示的代码也应提供视频网址,但会导致此错误:
Uncaught TypeError: video.getVideoUrl is not a function
我不需要获取选项卡当前url的另一种方式,因为我也想在此对象上执行其他一些功能(尽管可以在chrome控制台中执行这些功能,但它们总是告诉我它们不是功能)