leehon
V2EX  ›  问与答

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

  •  
  •   leehon · Jul 18, 2015 · 3827 views
    This topic created in 3952 days ago, the information mentioned may be changed or developed.
    一个APP内嵌的网页,页面有个setTimeout()方法,如果不是APP打开,就调用location.href跳转到APP下载页面。我的想法是阻止或删除setTimeout(),这样就能在电脑浏览器打开了

    我在Chrome安装了油猴,对前端和油猴实在不了解。我试了dom的getElement系列方法,好像获取不到js函数;我查了一下clearTimeout()可以阻止setTimeout()运行,但需要setTimeout()返回的ID,页面是直接运行的,无ID可用……
    9 replies    2015-07-18 21:26:32 +08:00
    tux
        1
    tux  
       Jul 18, 2015   ❤️ 1
    试试重定义页面的 "location.href" 方法,这样即使到时间调用,也不会跳了
    zsx
        2
    zsx  
       Jul 18, 2015   ❤️ 1
    window.setTimeout = function() { /*Your code here */ }
    kfll
        3
    kfll  
       Jul 18, 2015   ❤️ 1
    有挺多方法能完成你的需求的...

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

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

    另外 location 是无法重定义的
    leehon
        4
    leehon  
    OP
       Jul 18, 2015
    我写了window.setTimeout=null;现在不跳转了,但是页面的其他js没办法执行了,不知道什么原因
    wkdhf233
        6
    wkdhf233  
       Jul 18, 2015
    https://addons.mozilla.org/zh-cn/firefox/addon/foxreplace/
    试试用这玩艺把location.href给替换掉?
    wkdhf233
        7
    wkdhf233  
       Jul 18, 2015
    槽,发完才看到你是扣肉党。。
    KCheshireCat
        8
    KCheshireCat  
       Jul 18, 2015
    设置
    // @run-at document-start
    来让脚本优先运行
    setTimeout = function(X) {'''};
    把setTimeout函数覆盖掉,如果有其他部分使用setTimeout函数,
    可以
    sT = setTimeout;
    setTimeout = function(X) {
    if( '某种对X参数的判断' ) sT(X);
    };
    iNaru
        9
    iNaru  
       Jul 18, 2015
    @leehon null的话,应该会抛出setTimeout is not a function的异常,中断js了吧。
    按楼上改为window.setTimeout = function(){}; 看看。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3755 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 84ms · UTC 04:45 · PVG 12:45 · LAX 21:45 · JFK 00:45
    ♥ Do have faith in what you're doing.