用灵犀做油猴脚本填写react日期选择框
wils
Lv.4 核心创作者
刚才,在天浩大佬的提醒下,翻出了去年用来填写react网页上,日期时间选择框的脚本,发现早已不能用了
自己胡乱尝试了半天,没有头绪,直接问灵犀🤣
给出一个wps在线表单的地址,让灵犀尝试用油猴脚本的方式,填写日期时间选择框,尽量避免模拟鼠标点击
function getFiber(el) {
for (const k in el) {
if (k.startsWith('__reactFiber$') || k.startsWith('__reactInternalInstance$'))
return el[k];
}
}
window.setFormDate = function(pickerEl, y, m, d, hh, mm) { // m 为自然月,11月传11
let onChange = null, f = getFiber(pickerEl);
while (f) {
const p = f.memoizedProps || {};
if (typeof p.onChange === 'function' && p.picker !== undefined) { onChange = p.onChange; break; }
f = f.return;
}
if (!onChange) throw new Error('未找到picker onChange');
const ts = new Date(y, m - 1, d, hh, mm, 0, 0).getTime(); // 本地时区
onChange({ valueOf: () => ts });
}这逆向做的,简直漂亮🎉
我也是在灵犀的帮助下,才能稍微看懂
先找到日期选择框dom对应的fiber
再顺着fiber找到输入日期时触发的onchange事件
通过逆向得知,实际只用到参数的valueOf方法,所以伪造一个对象,传递需要填写的具体日期时间
自己用各种方法,填写日期后点击一次,都会变回原样
图中灵犀写的方法,一次修改成功,简直原汤化原食,哈哈🤣