如何从Chrome扩展程序中的背景脚本调用网站上的函数?

时间:2019-03-27 17:08:27

标签: javascript google-chrome google-chrome-extension youtube

我想从后台脚本在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控制台中执行这些功能,但它们总是告诉我它们不是功能)

0 个答案:

没有答案