2023-6.13:更新--》alt + 1 2 3 4 5放大的选中的文字,并加粗。按第二次,加粗失效,但是放大不会失效;
当前为
// ==UserScript==
// @name 哔哩哔哩笔记/B站笔记/哔站笔记/bilibli笔记,选中文字放大加粗、添加颜色
// @namespace https://space.bilibili.com/391912695 https://github.com/PaperFly-web/
// @author PaperFly
// @match http*://www.bilibili.com/video/*
// @match https://www.bilibili.com/medialist/*
// @icon https://static.hdslb.com/images/favicon.ico
// @grant none
// @description 2023-6.13:更新--》alt + 1 2 3 4 5放大的选中的文字,并加粗。按第二次,加粗失效,但是放大不会失效;
// alt+f:选择文字变灰 alt+d:选择文字变黑 alt+g:选择文字变绿 alt+b:选择文字变蓝 alt+r:选择文字变红 alt+y:选择文字变黄
// 2023-08-12:更新:alt+双击f:选择文字高亮变灰 alt+双击d:选择文字高亮变黑 alt+双击g:选择文字高亮变绿 alt+双击b:选择文字高亮变蓝 alt+双击r:选择文字高亮变红 alt+双击y:选择文字高亮变黄
// @version 1.2
// ==/UserScript==
(function() {
let timerId = null;
let lastKeyPressTime = 0;
const doubleClickThreshold = 300; // 阈值,单位:毫秒
'use strict';
document.addEventListener('keydown', function(event) {
if (event.altKey && (event.key === '1' || event.key === '2' || event.key === '3' || event.key === '4' || event.key === '5')) {
console.log(event.key)
bold();
event.preventDefault();
simulateShiftHome();
var pre = "";
if (event.key === '1') {
var sizeElement1 = document.querySelector('span.ql-picker-item[data-value="24px"][data-label="24"]');
if (sizeElement1) {
sizeElement1.click();
}
}
if (event.key === '2') {
var sizeElement2 = document.querySelector('span.ql-picker-item[data-value="22px"][data-label="22"]');
if (sizeElement2) {
sizeElement2.click();
}
}
if (event.key === '3') {
var sizeElement3 = document.querySelector('span.ql-picker-item[data-value="20px"][data-label="20"]');
if (sizeElement3) {
sizeElement3.click();
}
}
if (event.key === '4') {
var sizeElement4 = document.querySelector('span.ql-picker-item[data-value="18px"][data-label="18"]');
if (sizeElement4) {
sizeElement4.click();
}
}
if (event.key === '5') {
var sizeElement5 = document.querySelector('span.ql-picker-item[data-value="17px"][data-label="17"]');
if (sizeElement5) {
sizeElement5.click();
}
}
}
if (event.altKey && (event.key === 'r' || event.key === 'R')) {
event.preventDefault();
const currentTime = new Date().getTime();
if (currentTime - lastKeyPressTime <= doubleClickThreshold) {
// 触发 Alt + 双击R键 事件
heightRed();
if (timerId) {
// 取消延迟执行
clearTimeout(timerId);
}
} else {
timerId = setTimeout(fontRed, doubleClickThreshold);
}
lastKeyPressTime = currentTime;
}
if (event.altKey && (event.key === 'd' || event.key === 'D')) {
event.preventDefault();
const currentTime = new Date().getTime();
if (currentTime - lastKeyPressTime <= doubleClickThreshold) {
// 触发 Alt + 双击R键 事件
heightBlack();
if (timerId) {
// 取消延迟执行
clearTimeout(timerId);
}
} else {
timerId = setTimeout(fontBlack, doubleClickThreshold);
}
lastKeyPressTime = currentTime;
}
if (event.altKey && (event.key === 'b' || event.key === 'B')) {
event.preventDefault();
const currentTime = new Date().getTime();
if (currentTime - lastKeyPressTime <= doubleClickThreshold) {
// 触发 Alt + 双击R键 事件
heightBlue();
if (timerId) {
// 取消延迟执行
clearTimeout(timerId);
}
} else {
timerId = setTimeout(fontBlue, doubleClickThreshold);
}
lastKeyPressTime = currentTime;
}
if (event.altKey && (event.key === 'g' || event.key === 'G')) {
event.preventDefault();
const currentTime = new Date().getTime();
if (currentTime - lastKeyPressTime <= doubleClickThreshold) {
// 触发 Alt + 双击R键 事件
heightGreen();
if (timerId) {
// 取消延迟执行
clearTimeout(timerId);
}
} else {
timerId = setTimeout(fontGreen, doubleClickThreshold);
}
lastKeyPressTime = currentTime;
}
if (event.altKey && (event.key === 'y' || event.key === 'Y')) {
event.preventDefault();
const currentTime = new Date().getTime();
if (currentTime - lastKeyPressTime <= doubleClickThreshold) {
// 触发 Alt + 双击R键 事件
heightYellow();
if (timerId) {
// 取消延迟执行
clearTimeout(timerId);
}
} else {
timerId = setTimeout(fontYellow, doubleClickThreshold);
}
lastKeyPressTime = currentTime;
}
if (event.altKey && (event.key === 'f' || event.key === 'F')) {
event.preventDefault();
const currentTime = new Date().getTime();
if (currentTime - lastKeyPressTime <= doubleClickThreshold) {
// 触发 Alt + 双击R键 事件
heightF();
if (timerId) {
// 取消延迟执行
clearTimeout(timerId);
}
} else {
timerId = setTimeout(fontF, doubleClickThreshold);
}
lastKeyPressTime = currentTime;
}
var videoElement = document.querySelector('video');
if (event.altKey && event.key === 'c') {
videoElement.playbackRate += 0.1;
showVideoSpeed()
}
if (event.altKey && event.key === 'x') {
videoElement.playbackRate -= 0.1;
showVideoSpeed()
}
});
//文字黑色
function fontBlack() {
var elementd = document.querySelector('.ql-picker-item.ql-primary[data-value="#000000"]');
if (elementd) {
elementd.click();
}
}
//文字绿色
function fontGreen() {
var elementg = document.querySelector('span.ql-picker-item[data-value="#1db100"]');
if (elementg) {
elementg.click();
}
}
//文字蓝色
function fontBlue() {
var elementb = document.querySelector('span.ql-picker-item[data-value="#0b84ed"]');
if (elementb) {
elementb.click();
}
}
//文字红色
function fontRed() {
var elementr = document.querySelector('.ql-picker-item[data-value="#ee230d"]');
if (elementr) {
elementr.click();
}
}
//文字黄色
function fontYellow() {
var elementy = document.querySelector('span.ql-picker-item[data-value="#fbe231"]');
if (elementy) {
elementy.click();
}
}
//文字灰色
function fontF() {
var elementf = document.querySelector('span.ql-picker-item.ql-primary[data-value="#a5a5a5"]');
if (elementf) {
elementf.click();
}
}
//高亮红
function heightRed() {
const parentElement = document.getElementById('ql-picker-options-2');
const element = parentElement.querySelector('.ql-picker-item[data-value="#ee230d"]');
if (element) {
element.click();
}
}
function heightGreen() {
const parentElement = document.getElementById('ql-picker-options-2');
const element = parentElement.querySelector('.ql-picker-item[data-value="#1db100"]');
if (element) {
element.click();
}
}
function heightBlack() {
const parentElement = document.getElementById('ql-picker-options-2');
const element = parentElement.querySelector('.ql-picker-item[data-value="#000000"]');
if (element) {
element.click();
}
}
function heightYellow() {
const parentElement = document.getElementById('ql-picker-options-2');
const element = parentElement.querySelector('.ql-picker-item[data-value="#fbe231"]');
if (element) {
element.click();
}
}
function heightBlue() {
const parentElement = document.getElementById('ql-picker-options-2');
const element = parentElement.querySelector('.ql-picker-item[data-value="#0b84ed"]');
if (element) {
element.click();
}
}
function heightF() {
const parentElement = document.getElementById('ql-picker-options-2');
const element = parentElement.querySelector('.ql-picker-item[data-value="#a5a5a5"]');
if (element) {
element.click();
}
}
function bold() {
// 通过class找到元素
var elements = document.getElementsByClassName('ql-bold');
// 如果有多个元素符合条件,可以遍历它们
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
// 模拟点击事件
var clickEvent = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
element.dispatchEvent(clickEvent);
}
}
function showVideoSpeed() {
var videoElement = document.querySelector('video');
// 创建用于显示速度的元素
var speedDisplayElement = document.createElement('div');
speedDisplayElement.style.position = 'absolute';
speedDisplayElement.style.top = '10px';
speedDisplayElement.style.left = '10px';
speedDisplayElement.style.padding = '5px';
speedDisplayElement.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
speedDisplayElement.style.color = 'white';
speedDisplayElement.style.fontWeight = 'bold';
speedDisplayElement.style.transition = 'opacity 0.3s';
speedDisplayElement.style.opacity = '0';
// 将速度显示元素添加到视频元素的父级容器中
videoElement.parentElement.appendChild(speedDisplayElement);
// 更新速度显示
function updateSpeedDisplay() {
speedDisplayElement.textContent = videoElement.playbackRate.toFixed(1) + 'x';
speedDisplayElement.style.opacity = '1';
// 0.5秒后隐藏速度显示
setTimeout(function() {
speedDisplayElement.style.opacity = '0';
}, 500);
}
// 监听视频播放速度变化
videoElement.addEventListener('ratechange', updateSpeedDisplay);
// 初始化速度显示
updateSpeedDisplay();
}
function simulateShiftHome() {
// 创建一个 KeyboardEvent 对象
var event = new KeyboardEvent('keydown', {
shiftKey: true,
keyCode: 36
});
// 触发事件
document.dispatchEvent(event);
}
})();