您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add mousewheel & keyboard control to html5 video player.
// ==UserScript== // @name Mousewheel and keyboard control video HTML5 // @name:en Mousewheel and keyboard control video HTML5 // @namespace http://tampermonkey.net/ // @version 0.2 // @description Add mousewheel & keyboard control to html5 video player. // @description:en Add mousewheel & keyboard control to html5 video player. // @author HoangNam // @match *://*/* // @grant none // @license MIT2 // @downloadURL // @updateURL // ==/UserScript== // Thời gian tua tới/lùi (5 giây) const seekTime = 2; function handleWheel(event, seekTime) { // Kiểm tra xem sự kiện có phải là sự kiện wheel hay không if (event.type === 'wheel') { // Lấy phần tử video hoặc audio đang được trỏ chuột const isOverMedia = document.querySelector('video, audio'); const isOverPlayer = document.querySelector('div.player'); // Kiểm tra xem có phải ứng dụng Facebook không //const isFacebookApp = window.location.hostname.includes('facebook.com'); // Kiểm tra xem có phải ứng dụng dailymotion không // const isYoutubeApp = window.location.hostname.includes('youtube.com'); // Kiểm tra xem con trỏ chuột có trên video hoặc audio hay không // if ((!isOverMedia || !isOverMedia.contains(event.target)) && !isFacebookApp && !isYoutubeApp) // Tua tới/lùi 5 giây if (event.deltaY > 0) { // Tua tới isOverMedia.currentTime = Math.max(0, isOverMedia.currentTime - seekTime); } else { // Tua lùi isOverMedia.currentTime = Math.min(isOverMedia.duration, isOverMedia.currentTime + seekTime); } // Kiểm tra xem có phải đang cuộn trên các phần tử media không if (isOverPlayer) { // Nếu đúng thì ngăn chặn hành động cuộn event.preventDefault(), { passive: true }; } if (isOverMedia && isOverMedia.contains(event.target)) { // Tắt hành động mặc định của chuột event.preventDefault(); event.stopPropagation(); } } } // Thêm event listener cho sự kiện wheel với chế độ passive document.addEventListener('wheel', (event) => handleWheel(event, seekTime), { passive: false, capture: true }); window.addEventListener('load', function() { document.addEventListener('keydown', function(e) { console.log(e.keyCode); var player = document.getElementsByTagName('video')[0]; if (!player) return; switch (e.keyCode) { case 37: // Arrow Left lùi 5s player.currentTime -= e.ctrlKey ? 30 : 5; break; case 39: // Arrow Right tiến 5s player.currentTime += e.ctrlKey? 30 : 5; break; case 32: // Space tạm dừng player.paused ? player.play() : player.pause(); break; } }); });