您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays a time in seconds to 3 decimal places when paused.
// ==UserScript== // @name YouTube Detailed Timecode // @namespace http://tampermonkey.net/ // @version 0.4 // @description Displays a time in seconds to 3 decimal places when paused. // @author Charlie Laabs // @match https://*.youtube.com/* // @match http://*.youtube.com/* // @grant none // ==/UserScript== (function() { 'use strict'; console.log('Running YTDT'); var ytPlayer; var ytPlayerUnwrapped; var detailedTime = document.createElement('span'); var playerInitialized = false; function getElements() { ytPlayer = document.getElementById("movie_player") || document.getElementsByClassName("html5-video-player")[0]; ytPlayerUnwrapped = ytPlayer.wrappedJSObject; if (ytPlayer) { detailedTime.innerHTML = ""; ytPlayer.addEventListener("onStateChange", playerChanged, true ); document.addEventListener("keyup", keyUp, true ); } } function playerStarted() { var timeDisp = ytPlayer.getElementsByClassName("ytp-time-display")[0]; detailedTime.className = 'us-detailed-time'; detailedTime.style.paddingLeft = '5px'; timeDisp.appendChild(detailedTime); playerInitialized = true; } function playerChanged(state) { //console.log("stateChanged: ", state); if (state != -1 && !playerInitialized ) { playerStarted(); } if (state == 2) { detailedTime.innerHTML = '| ' + ytPlayerUnwrapped.getCurrentTime().toFixed(3); } } function keyUp(e) { //console.log('keyUp:', e); if (e.keyCode == 188 || e.keyCode == 190) { detailedTime.innerHTML = '| ' + ytPlayerUnwrapped.getCurrentTime().toFixed(3); } } getElements(); //for embedded videos document.addEventListener("yt-navigate-finish", getElements, true ); //for YouTube })();