在Chrome中通过JS设置Discord在线状态的元素定位难题
定位Discord在线状态元素的可行方法
由于Discord的在线状态选项(Online、Idle、DND、Invisible)共享相同类名,无法通过getElementById(注:你之前的写法有误,该方法是根据元素id而非类名查找)精准定位,可采用以下两种方式解决:
1. 基于元素内部属性定位
每个状态选项内的图标带有唯一的aria-label属性,可结合querySelector和属性选择器定位目标元素:
// 点击Online状态 document.querySelector('div.statusItem_ad5fac [aria-label="Online"]').closest('div.statusItem_ad5fac').click(); // 点击Idle状态 document.querySelector('div.statusItem_ad5fac [aria-label="Idle"]').closest('div.statusItem_ad5fac').click(); // 点击DND状态 document.querySelector('div.statusItem_ad5fac [aria-label="Do Not Disturb"]').closest('div.statusItem_ad5fac').click(); // 点击Invisible状态 document.querySelector('div.statusItem_ad5fac [aria-label="Invisible"]').closest('div.statusItem_ad5fac').click();
2. 基于元素索引定位
若状态选项的固定顺序为Online→Idle→DND→Invisible,可通过querySelectorAll获取所有状态元素后按索引选择:
// 获取所有状态选项元素 const statusItems = document.querySelectorAll('div.statusItem_ad5fac'); // 点击第一个(Online) statusItems[0].click(); // 点击第二个(Idle) statusItems[1].click(); // 点击第三个(DND) statusItems[2].click(); // 点击第四个(Invisible) statusItems[3].click();
额外提示
- Discord的动态类名(如
statusItem_ad5fac)可能随版本更新变化,优先使用属性/文本内容定位更稳定。 - 执行脚本前需确保状态选择菜单已完全展开,否则会因元素未加载导致报错。
内容的提问来源于stack exchange,提问作者Qualle
相关产品推荐
相关产品推荐

