油猴 网易云音乐 循环播放
- 网易云音乐单曲循环,单曲播放完后会重新加载/下载音乐,希望能不重新加载。
- DOM较源逻辑稳定,需要找到对应的DOM元素以控制,不便直接覆写源逻辑
- 进度元素
全文搜索"j-flag time",只找到一个出处
开启正则,全文搜索"\btime\b"(\b为分隔符,避免找到timeout等)(仅展示部分结果)
图上第一个文件是是样式表,第二个是页面模板?
逐一查看搜索结果,找到设置time(赋值)操作,打断点,并播放(运行)、在进度条上指定新位置以查看运行时值,代码与前端界面对应。
尝试中断后在控制台直接设置值无果(不影响进度),在相应的线程检查调用栈
尝试在控制台设置.radio生效(控制播放进度)
全局搜索onslidestop,发现传入的形参d8f,是外部两处(图1134、1143行)构造的实参(Hj8b)
继续向上。 - 以上1134在测试中未被触发,1143所在的1139是点击进度条事件触发,其中d8f是点击事件(另见后文)
-
查找对(Hj8b)的赋值操作,播放时进度在此函数(yl6f.WP5U)被更新
继续向上。
- 查找方法(yl6f.WP5U)的调用,无果
查找(WP5U),有(this.WP5U)形式的调用4处。(则(yl6f)是this?或this的父类?)
- 手动点击播放进度条,找到来自DOM元素触发的事件(d8f)响应。注意触发元素是currentTarget(而非path[0])
准备尝试模拟点击。
以上auto-id是变化的,需要用class来查找,document.getElementsByClassName("barbg j-flag")[0]。 -
JS如何模拟鼠标点击X,Y坐标_东海陈光剑的博客-CSDN博客_js 模拟鼠标点击构造点击事件。
对元素使用getBoundingClientRect获取客户区坐标(经测试,无需屏幕坐标)
对照d8f在initMouseEvent构造事件。参见:JavaScript获取DOM元素位置和尺寸大小 - 谦行 - 博客园 (cnblogs.com)\视口坐标(getBoundingClientRect)。
-
播放结束重新播放,(从DOM中)找触发
栈中向上在栈顶!找到onMediaCallBack。函数名没有被简化/混淆,且定义无let/var限定,说明是DOM全局的?但并未在事件侦听器断点中找到它。不过测试中发现了此事件侦听器断点可以捕获各种事件。
且事件的响应都是此onMediaCallBack。
经测试,播放结束后会先后触发pause-ended事件。 -
但在油猴里document.onMediaCallBack(this/Window亦不存在)为undefine。
HTML Audio/Video DOM timeupdate 事件,play()方法_ssisse的博客-CSDN博客_timeupdate: H5 DOM中ontimeupdate是独立的事件。
找事件的源元素找不到此id,也找不到此类..在“元素”面板中显示得到在当前页面中找不到节点。(Node cannot be found in the current page.)
搜索audio,在swf中
无法找到元素..则无法绑定事件?(此事件又不支持冒泡传递) - 尝试中
-
对以上d8f\srcElement,虽然没找到元素(节点),但其outerHTML包含了文件地址路径..
<audio id="auto-id-XXX" src="https://m701.music.126.net/XX/YY/ZZ.m4a"></audio>
可以直接播放 - 可以给d8f(audio类)设置ontimeupdate等方法,会被触发响应。
- audio完全是个孤立的元素,貌似建立,绑定完事件响应后就移除了?变成upvalue了?只能在过程初期中去拦截了?
this即此.audio#auto-id-xxx。
此onMediaCallBack是顶层栈。实际设置的点击位置直接取所有(窗口、客户区)X=-1000,因为貌似受窗口缩放压缩的影响,可能实际点击的位置也偏移很多。
貌似在时间进度条上点击鼠标,其坐标也会受影响? - 使用document.getElementsByClassName("icn icn-one")判断当前是否为单曲循环模式。
- 全文搜索的结果看着仅2行,但实际匹配项的数量可能不止,可能是由于同行中有多个
-
函数是一处定义(不算重构覆盖的话),多处调用;变量类似的。
-
可以顺带展开字段duration。
- 学习、练习。onended事件-三体教程 (santii.com)
含在线测试。经测试,可以把audio标签放到body外面。但是再深(如放到div内)又不行了,audio内的子元素/标签无法正常工作了。 - DOM 对象动作事件 来之菜鸟教程_-BiHu的博客-CSDN博客
鼠标/键盘/对象/表单/剪贴板/打印/拖动/多媒体/动画/过渡/其他 - 貌似出现多次加载,且内容不同
还好var变量共享(彼此可以识别)->关于是否一致、是否同一个对象,另见hashcode & System.identityHashCode。
刚开始,页面会删除很多东西,可疑..
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?