getCurrentTime() for YouTube Video

前端 未结 4 1002
故里飘歌
故里飘歌 2021-02-14 17:02

I\'m writing a Chrome Extension in Javascript and I want to get the current time for the playing video on youtube.com. I tried using the answer from question Getting Current You

相关标签:
4条回答
  • 2021-02-14 17:12

    As Ben correctly assumed, you're executing the code in the context of your background page, which is wrong.

    To interact with other pages, you need to inject a content script in them. See overview of that here. You'll probably need to learn how Messaging works so you can gather data in a content script and communicate it to the background page.

    To make a minimal example, you can have a file inject.js

    // WARNING: This example is out of date
    // For the current HTML5 player, see other answers' code snippets
    ytplayer = document.getElementById("movie_player");
    ytplayer.getCurrentTime();
    

    And in your background page script, you can inject that into the current page as follows (when the button is clicked, for instance)

    chrome.browserAction.onClicked.addListener(function(tab) {
      chrome.tabs.executeScript({
        file: 'inject.js'
      });
    });
    

    Then, you'll see the result of the execution in the console of the currently open page. To report the result back, you'll need to use chrome.runtime.sendMessage

    0 讨论(0)
  • 2021-02-14 17:17

    Use the following code works for chrome extension:

    video = document.getElementsByClassName('video-stream')[0];
    console.log(video);
    console.log(video.currentTime);
    
    0 讨论(0)
  • 2021-02-14 17:20

    you can only use getElementById when you´r referencing to the correct page. You´r using the right id. if you´r trying to access the play form another page you can use the jquery .load() function

    ---------EDIT----------

    in the sample they do it like so: function getCurrentTime() { var currentTime = player.getCurrentTime(); return roundNumber(currentTime, 3); }

    0 讨论(0)
  • 2021-02-14 17:27

    In 2020, it seems we should use: player.playerInfo.currentTime.

    full code on codepen

    0 讨论(0)
提交回复
热议问题