- 网易云音乐单曲循环,单曲播放完后会重新加载/下载音乐,希望能不重新加载。
- 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坐标js 模拟鼠标点击构造点击事件。
对元素使用getBoundingClientRect获取客户区坐标(经测试,无需屏幕坐标)
对照d8f在initMouseEvent构造事件。 - 参见:JavaScript获取DOM元素位置和尺寸大小\视口坐标(getBoundingClientRect)。
- 播放结束重新播放,(从DOM中)找触发
- 栈中向上在栈顶!找到onMediaCallBack。函数名没有被简化/混淆,且定义无let/var限定,说明是DOM全局的?
- 但并未在事件侦听器断点中找到它。不过测试中发现了此事件侦听器断点可以捕获各种事件。
- 且事件的响应都是此onMediaCallBack。
经测试,播放结束后会先后触发pause-ended事件。 - 但在油猴里document.onMediaCallBack(this/Window亦不存在)为undefine。
HTML Audio/Video DOM timeupdate 事件,play()方法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 对象动作事件鼠标/键盘/对象/表单/剪贴板/打印/拖动/多媒体/动画/过渡/其他
- 貌似出现多次加载,且内容不同
还好var变量共享(彼此可以识别)->关于是否一致、是否同一个对象,另见hashcode & System.identityHashCode。
刚开始,页面会删除很多东西,可疑..