网页布局很简单:
<script> function(1) function(2) function btnonclick(type, obj) //目标函数 </script>我的目的是获取该函数的一个变量,所以尝试用 Tampermonkey 重写一个函数用来替换目标函数,但是我的脚本总是在页面加载完成后执行,随后点击该 btn 执行的还是原函数,在 google 找到了很多资料但是仍然不能解决我的问题(我的前端很薄弱),各位 v2exer 能不能给一个思路,我被这个问题闹了很久了...
我的 Tampermonkey 代码:
(function() { function btnonclick(type, obj) {//代码}
var inject = document.createElement("script");
inject.setAttribute("type","text/javascript");
inject.appendChild(document.createTextNode("(" + btnonclick +")()"));
document.body.appendChild(inject);
})();
或
(function() { function btnonclick(type, obj) {//代码} unsafeWindow.btnonclick = btnonclick(); })();
1
luoway 2019-10-12 19:41:47 +08:00
网页编程是基于事件驱动的,意味着你能访问的入口就是这些事件监听器。
这些事件监听器就是函数,函数可以被装饰,还可以被转为字符串。 思路可以是: 1. 获取特定 DOM 元素上的所有监听函数 2. 根据函数名或函数字符串特征,找到目标函数,删除 DOM 元素上的该监听器 3. 写一个函数包裹目标函数,添加到原 DOM 元素上。实现了替换监听器函数。 4. 若要修改目标函数运行逻辑,可以将目标函数转为字符串,再插入自写逻辑,转为函数替换目标函数 理论上可行,没实践过。 |
3
zhangzhenqian 2020-05-20 15:46:39 +08:00
你好,我现在也想搞个这个功能,我是后端,前端 js 油猴不是特别熟悉 摸索了一阵子 能否指教一下
|
4
Lunatic1 OP @zhangzhenqian 相互学习吧,写了这个脚本之后我就没碰过 Tampermonkey 的脚本。
|