【问题标题】:setInterval crashes my browser when running a user script?运行用户脚本时,setInterval 使我的浏览器崩溃?
【发布时间】:2013-09-27 21:30:40
【问题描述】:

好的,所以脚本可以工作,但是 setInterval 会在 30 秒左右后让我的浏览器崩溃。 至少我认为这是正在发生的事情。

代码如下:

var count = 0;

setInterval(function()
{
    var ifLose = document.getElementById('result-text').innerHTML;

    if (ifLose.length > 4) 
    {

        count++;
        document.getElementById("bet-multiplier").click();
        document.getElementById("bet-bt").click();

    }
    else 
    {
        for (count > 0; count--;) 
        {

        document.getElementById("bet-divider").click();

        }

        document.getElementById("bet-bt").click();

    }   
}, 1000);

我做错了什么? 它与计数和 for 循环有关吗? 非常感谢任何帮助!

【问题讨论】:

    标签: javascript crash setinterval userscripts


    【解决方案1】:

    这一行是你的问题(或至少是问题的很大一部分):

        for (count > 0; count--;) 
    

    定时器处理程序第一次运行后,“count”将为-1。这个循环会持续很长时间。

    你可能想要

        for (; count > 0; count--)
    

    for 循环头包含三个部分:初始化、测试和...呃,第三部分,传统上是您进行迭代控制的地方,但实际上只是放置表达式的地方。您的原始代码首先具有测试表达式。这并不是语法上的不正确,因为 JavaScript 只需要一个表达式,而像这样的比较表达式就可以了。然而,它并没有真正做任何事情。你的版本中的测试表达式是count--,这在语法上也是可以的,对于测试表达式来说并不是一件坏事。但是,由于间隔处理程序从不将“计数”重置为 0,因此一旦将其递减为 -1,循环将继续进行。

    【讨论】:

    • 谢谢!这为我修复了它:D 所以这只是我的语法中的一个问题!你能解释一下这条线和我原来的那条线之间的区别吗?我不确定为什么我的原始代码中 count 会是 -1
    • @user1115155 好的,我正在为答案添加一点内容。
    • 谢谢,这更有意义!你帮了我很多!
    猜你喜欢
    • 2016-10-11
    • 2012-06-07
    • 2012-10-15
    • 2021-10-03
    • 2014-08-10
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2018-08-20
    相关资源
    最近更新 更多