您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为小红书网页端播放器增加更多倍速选项,滚动调整菜单高度
// ==UserScript== // @name 小红书倍速增强 // @namespace http://tampermonkey.net/ // @version 0.0.3 // @description 为小红书网页端播放器增加更多倍速选项,滚动调整菜单高度 // @author zzx114 // @match *://www.xiaohongshu.com/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 等待播放器加载完成 const waitForPlayer = setInterval(() => { const playbackRateList = document.querySelector('xg-playbackrate ul'); const playbackRateContainer = document.querySelector('xg-playbackrate'); if (playbackRateList) { clearInterval(waitForPlayer); const playbackRateList = document.querySelector('xg-playbackrate ul'); playbackRateList.style.height = 'auto'; // 或设置具体像素值 playbackRateList.style.overflowY = 'auto'; // 超出部分显示滚动条 // 添加新的倍速选项 const newSpeeds = [ { cname: '3', text: '3x' }, { cname: '4', text: '4x' }, ]; // 强制覆盖父容器样式(如果有overflow限制) const parentStyle = playbackRateContainer.parentElement.style; parentStyle.overflow = 'visible'; // 确保父容器不隐藏菜单 // 添加悬停保持显示的逻辑 let hideTimeout; playbackRateContainer.addEventListener('mouseenter', () => { clearTimeout(hideTimeout); playbackRateList.style.display = 'block'; // 鼠标进入时显示 }); playbackRateContainer.addEventListener('mouseleave', () => { hideTimeout = setTimeout(() => { playbackRateList.style.display = 'none'; // 鼠标离开后延迟隐藏 }, 300); }); // 点击按钮显示/隐藏菜单 const playbackRateButton = document.querySelector('xg-playbackrate'); if (playbackRateButton) { playbackRateButton.addEventListener('click', () => { playbackRateList.style.display = playbackRateList.style.display === 'block' ? 'none' : 'block'; }); } // 将新选项插入到列表的最前面 newSpeeds.forEach(speed => { const li = document.createElement('li'); li.setAttribute('cname', speed.cname); li.className = ''; li.textContent = speed.text; playbackRateList.insertBefore(li, playbackRateList.firstChild); }); // 更新点击事件处理 playbackRateList.querySelectorAll('li').forEach(li => { li.addEventListener('click', function() { // 移除所有li的selected类 playbackRateList.querySelectorAll('li').forEach(item => { item.classList.remove('selected'); }); // 为当前点击的li添加selected类 this.classList.add('selected'); const speed = parseFloat(this.getAttribute('cname')); const video = document.querySelector('video'); if (video) { video.playbackRate = speed; } }); }); } }, 500); })();