Bilibili 旧播放页

恢复Bilibili旧版页面,为了那些念旧的人。

< 腳本Bilibili 旧播放页的回應

提問/評論

§
發表於:2019-12-29
編輯:2019-12-30

请教一下一些问题

@indefined 说道: 我发出来也只是想你复制去用罢了 相比起来你比我更有动手能力愿意去折腾它,以后遇到问题你折腾不出来再问我或者问别人,能力范围内别人还是会解答的,或者找别的愿意接手的人开发维护

因为感觉一直在人家那里讨论不大好,所以把你 @ 过来了。 我大概的确有意愿去折腾它,而且看起来你写的脚本其实也不怎么需要折腾,但有这之前有个问题我没弄清楚,所以发这个讨论并邀请你过来,如果你愿意的话我也想赋予你为这个脚本的作者并拥有完全的权限,毕竟我正准备全盘复制你的代码。 下面的问题是基于你允许我“复制去用”的脚本: 不知道是不是机器性能的原因,直接开启脚本打开av页时状态会是这样 而控制台的情形会是这样 无论怎么刷新,打开那个av视频都是这样,凭我的直觉这是document.write()并没有执行的缘故。由于我写脚本时我曾遇到过类似的情形,所以我试着删除了

@run-at document-start

这下界面变成了这样 可以看到这旧版页面真的恢复得很完美了,唯独播放器变形了,打开控制台是这种情形 显然还是<!-- built files will be auto injected -->(这什么鬼!)自动载入了不需要的东西导致的,是重写页面前的残留作用在新页面之上了。 所以我想要请教的问题是为什么启用@run-at document-startdocument.write()会执行失败。我以为这是问题的核心,可是想想你写脚本时肯定会调试的,难道真的是我的“机器性能问题”?如果真有“性能问题”,那该怎么解决,因为删掉@run-at document-start再等其他没用的东西载入后想办法修复显然并非上策。 需要的话附上版本信息供你参考,你说有问题可以随时请教,我就舔颜顺竿就咬了。

OS:Windows 8 (Build 9200);
chrome:79.0.3945.88 (正式版本) (64 位) (cohort: Stable);
Tampermonkey:4.10.6105(Chrome (beta));
§
發表於:2019-12-30

嗯……试了一下我这里没办法复现你这个问题…… 我自己测试的结果是只需要那段原始视频数据不需要任何原网页的脚本和内容所以使用了@run-at document-start,尽可能的去阻止所有原网页的内容运行因为不需要任何东西,至于机器性能能阻止到多少大概并没有什么所谓应该不会导致不能运行,只可能阻止失败时页面变形而已,就像你去掉那一行一样,至于怎么测试的,打开一个新窗口然后把数据写在新窗口里就可以了,具体就是把document.write(html)那里换成这样:

var w = window.open();//新开一个空白窗口
w.document.open();
w.document.write(html);
w.document.close();

因为测试过没有干扰情况下可以独立运行所以才写了@run-at document-start。因为我没办法复现你的问题所以大概你只能自己测试一下,至于JS的调试技巧我也是没多少经验的,调试看出错原因你应该看console那个控制台标签页,如果有错误会有红色X提示,如果没有错误那大概我也不知道会有什么办法。至于脚本自动注入的代码旧版里也会注入一大堆在网页头里我并没有去研究过它

§
發表於:2019-12-30
編輯:2019-12-30

@indefined 感谢你接受我的邀请,以后我有解决不了的问题大概也要继续麻烦你了。 说回上述问题,我目前是通过去掉window.stop()算是暂时解决了。 在参考你的脚本的时候由于实在不会fetch()所以还是用回了XHR,并尝试改为了同步请求,发现这样可以解决与大部分脚本的冲突,但可能也引入了更多bug,就我目前发现的就是播放器二选一的情形出现得多了,却找不到原因,虽然可以通过刷新解决,不知道你是怎么想的?

§
發表於:2019-12-30

@"Motoori Kashin" 说道:

……这个问题我并没有办法复现,所以在我看来去掉window.stop()是没有必要的,也没有必要去修正播放器的样式,之前我也回复过你我没有没有遇到过播放器二选一的问题,根据之前的猜测这些多余问题大概也是因为没有阻止页面的新脚本加载造成的。至于为什么你那边会空白我也没办法测试,前面我也告诉你我的测试方法了,怎么调试真的只能你自己来了,在我这边把你脚本前面的window.stop()启用也是加载正常的,不启用也没遇见什么奇怪的问题,虽然我觉得不阻止的话肯定是会有概率遇到问题的…… 另外你真的不能去掉那个所谓的“您”吗?无谓尊称并不是什么尊重的表现,我只会觉得被奉承了,我并不觉得技术交流需要加什么尊称,我也没做什么值得别人尊敬的东西。以及接受邀请我也不是本意,我只是在邮件里点进来然后就自动接受了,还是之前的话我并没有意愿管理这个脚本,如果你有问题的话能力范围内我能帮忙就帮忙不能的话也请自行努力或者请教别人了

§
發表於:2019-12-30

的确,一直用敬词很奇怪,我已经不客气地把它们都去了。回到问题,果然还是我这里的问题,我也觉得window.stop()大概对付这些乱七八糟的问题有奇效,靠其他扩展拦截那些请求终究也不是办法。

§
發表於:2019-12-31

换了个浏览器确实stop之后写入无效,大概是浏览器内核执行逻辑导致的,谷歌脑袋里在想什么我也不懂,大概这个问题只有去问内核开发了 搜了一下,大概可以用document.write('<!--');忽略后面加载的一些网页内容,不过用处可能不大,因为原网页里有对应的闭合,聊胜于无吧有用就加进去减少异常问题的概率

§
發表於:2019-12-31

原来我们一直用的是不同的浏览器!为了window.stop()我今天其实尝试了把document.write()换成innerHTML,不过那段播放器初始化由于要作为内联脚本,使用innerHTML触犯规定无论如何也运行不了,尝试直接在控制台敲那段代码就可以启动播放器,不知道有什么什么办法把这段初始化代码append就去,如果成功就能兼容window.stop()了。

發表回覆

登入以回復