油猴脚本阻止 setTimeout()运行的问题

2015-07-18 19:20:17 +08:00
 leehon
一个APP内嵌的网页,页面有个setTimeout()方法,如果不是APP打开,就调用location.href跳转到APP下载页面。我的想法是阻止或删除setTimeout(),这样就能在电脑浏览器打开了

我在Chrome安装了油猴,对前端和油猴实在不了解。我试了dom的getElement系列方法,好像获取不到js函数;我查了一下clearTimeout()可以阻止setTimeout()运行,但需要setTimeout()返回的ID,页面是直接运行的,无ID可用……
3232 次点击
所在节点    问与答
9 条回复
tux
2015-07-18 19:49:48 +08:00
试试重定义页面的 "location.href" 方法,这样即使到时间调用,也不会跳了
zsx
2015-07-18 19:50:53 +08:00
window.setTimeout = function() { /*Your code here */ }
kfll
2015-07-18 20:15:39 +08:00
有挺多方法能完成你的需求的...

比如看他判断是不是 app 的逻辑,随便劫持掉一个条件

比如你说的 clearTimeout ,不知道 ID 的情况下,你从 0 清到 10000 大概也都清完了

另外 location 是无法重定义的
leehon
2015-07-18 21:15:03 +08:00
我写了window.setTimeout=null;现在不跳转了,但是页面的其他js没办法执行了,不知道什么原因
zhangchioulin
2015-07-18 21:16:28 +08:00
wkdhf233
2015-07-18 21:23:13 +08:00
https://addons.mozilla.org/zh-cn/firefox/addon/foxreplace/
试试用这玩艺把location.href给替换掉?
wkdhf233
2015-07-18 21:24:07 +08:00
槽,发完才看到你是扣肉党。。
KCheshireCat
2015-07-18 21:24:50 +08:00
设置
// @run-at document-start
来让脚本优先运行
setTimeout = function(X) {'''};
把setTimeout函数覆盖掉,如果有其他部分使用setTimeout函数,
可以
sT = setTimeout;
setTimeout = function(X) {
if( '某种对X参数的判断' ) sT(X);
};
iNaru
2015-07-18 21:26:32 +08:00
@leehon null的话,应该会抛出setTimeout is not a function的异常,中断js了吧。
按楼上改为window.setTimeout = function(){}; 看看。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/206623

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX