Greasy Fork is available in English.
让播放器在AB点之间循环!
主要是懒得做修改弹窗什么的了(
有刚需的话,如果你能看懂下面的可以直接改,或者说一下要改成什么我看看给你改一下定制版本
308-329行
function hotKeyHandler(e) {
log(1,e);
if (['KeyA', 'KeyB', 'KeyO'].includes(e.code)) {
log(2,e);
if (e.ctrlKey || e.altKey || e.shiftKey) return;
if ([...e.path.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT")].length) return;
switch (e.key) {
case "a":
triggerAPoint();
e.preventDefault();
break;
case "b":
triggerBPoint();
e.preventDefault();
break;
case "o":
triggerToggleDoAuto();
e.preventDefault();
break;
}
}
}
假如我要把O键换成Z键:
1:if (['KeyA', 'KeyB', 'KeyO'].includes(e.code)) {
这里的KeyO改成KeyZ
2:case "o":
这里的o改成z
变成:
function hotKeyHandler(e) {
log(1,e);
if (['KeyA', 'KeyB', 'KeyZ'].includes(e.code)) {
log(2,e);
if (e.ctrlKey || e.altKey || e.shiftKey) return;
if ([...e.path.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT")].length) return;
switch (e.key) {
case "a":
triggerAPoint();
e.preventDefault();
break;
case "b":
triggerBPoint();
e.preventDefault();
break;
case "z":
triggerToggleDoAuto();
e.preventDefault();
break;
}
}
}
注意上面的大写,下面的小写,主要讲究一个对应。
有点小复杂,哈哈
谢谢大神,解答的太详细了!我脚本不太会,之前查着资料改过视频加速的脚本刷课,当时那个作者是用数字指代键盘,65-90对应A-Z字母,查资料发现这么做的还不少,所以思维定势了,按照Key对照表直接搜索65、66,结果没搜到,也没敢乱改🤣🤣您这个写法比数字指代直观多了。
但我发现个问题,改完还是不起作用,后来我把所有扩展都关闭了,脚本除了您这个也都关闭了,按键还是不起作用,不管是用改的YU键还是原来默认的AB键,点开菜单看起始点一直是0,不像鼠标点能设置起始时间。想着是不是edge兼容性不好,换了firefox还是不起作用。目前系统是win11,更新到最新补丁,不晓得是哪里有问题。找机会我换台电脑再试试,现在先用鼠标点菜单用。
再次感谢!
按道理是用数字keycode比较准确并且统一,我是偷懒啦哈哈 这种有兴趣的话可以看看MDN那边的文档,讲的还是很细的。(KeyboardEvent - MDN)
兼容性这个实际上这两天我这边有时候也会有失效的问题,不是你的问题。
修改后的代码:
function hotKeyHandler(e) {
log(1,e);
if (['KeyA', 'KeyB', 'KeyO'].includes(e.code)) {
log(2,e);
if (e.ctrlKey || e.altKey || e.shiftKey) return;
if (e.path?.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT") || e.target.tagName=="INPUT" || e.target.tagName == "TEXTAREA") return;
switch (e.key) {
case "a":
triggerAPoint();
e.preventDefault();
break;
case "b":
triggerBPoint();
e.preventDefault();
break;
case "o":
triggerToggleDoAuto();
e.preventDefault();
break;
}
}
}
也就是if ([...e.path.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT")].length) return;
改成了if (e.path?.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT") || e.target.tagName=="INPUT" || e.target.tagName == "TEXTAREA") return;
(e.path有时候不存在,所以filter这里会报错)
其实这里也是偷懒所以才有这个错误(
另外,YU按键版本:点此从Gist安装
哦对了如果你用过旧版本的话你会知道,新版本开始用的话可能都没有见过,以前设置AB点还会给视频进度条加一个绿色的进度指示哪里是循环范围,但是现在好像也失效了(
多谢大神!B站总是悄悄地更新,确实不好弄,我首页上还出现了〖退出内测〗字样,不知道他们在内测什么,估计这是最近好几个扩展和脚本失效的原因。
嗯,是的。B站更新是一部分人先收到推送这样一点一点更新的,而且一直在变化。我写过脚本蛮多的(大都是自己需要所以做的),但是好多都属于没有人反馈就先不管,什么时候用得上再更新的状态...毕竟更新的太快了,哈哈哈哈
要是能在设置里允许改快捷键就更好了。目前快捷键跟已有的扩展冲突,遇上冲突双方都不能改快捷键的,就得忍痛关掉一个🤣