【问题标题】:Change javascript code in FireFox using Inspect Element使用 Inspect Element 更改 FireFox 中的 javascript 代码
【发布时间】:2020-10-28 19:37:26
【问题描述】:

这里是javascript代码:

<script type="text/javascript">
    var javascript_countdown = function () 
    {
        var time_left = 10; //number of seconds for countdown
        var keep_counting = 1;
        var no_time_left_message = 'Please Activate Javascript.';
        function countdown() 
        {
            if(time_left < 2) 
            {
                keep_counting = 0;
            }
            time_left = time_left - 1;
        }
        function add_leading_zero( n ) 
        {
            if(n.toString().length < 2) 
            {
                return '0' + n;
            } 
            else 
            {
                return n;
            }
        }
        function format_output() 
        {
            var hours, minutes, seconds;
            seconds = time_left % 60;
            minutes = Math.floor(time_left / 60) % 60;
            hours = Math.floor(time_left / 3600);
            seconds = add_leading_zero( seconds );
            minutes = add_leading_zero( minutes );
            hours = add_leading_zero( hours );
            return  minutes + ':' + seconds;
        }
        function show_time_left() 
        {
            document.getElementById('javascript_countdown_time').innerHTML = format_output();//time_left;
            document.getElementById('javascript_countdown_time_bottom').innerHTML = format_output();//time_left;
        }
        function no_time_left() 
        {
            //document.getElementById('javascript_countdown_time').innerHTML = no_time_left_message;
            //alert("");
            document.FormAzmoon.submit();
        }
        return {
            count: function () {
                countdown();
                show_time_left();
            },
            timer: function () {
                javascript_countdown.count();
                if(keep_counting) {
                    setTimeout("javascript_countdown.timer();", 1000);
                } else {
                    no_time_left();
                }
            },
            init: function (n) {
                time_left = n;
                javascript_countdown.timer();
            }
        };
    }();
    javascript_countdown.init(601);// Time Recorder Secends
</script>

此 javascrip 代码是页面中的反向计时器(10 分钟)。
当 timer = 0 时,它会自动提交页面。
我想操纵它以增加时间。
我认为增加时间的最佳方法是这条线:

setTimeout("javascript_countdown.timer();", 1000);

改为:

setTimeout("javascript_countdown.timer();", 100000);

当我在 Firefox 中更改 Inspector 的 Inspect Element 的这个值时,什么也没有发生。
那么解决办法是什么呢?
如果除了firefox还有其他方法请教我!
还教我如何通过控制台重写和操作函数内的变量!

【问题讨论】:

    标签: javascript firefox inspect-element


    【解决方案1】:

    JS 将在 DOM 中被解析并运行。在 JS 运行后更改页面标记不会改变 JS 的运行。您需要以其他方式对其进行更改。

    一种选择是用您自己的函数覆盖.timer 函数。页面脚本运行后,打开控制台并运行:

    // save a reference to the original function if you need to
    const origTimer = javascript_countdown.timer;
    javascript_countdown.timer = () => null;
    

    这将阻止页面对.timer 的调用执行任何操作。然后,一旦您想提交表单,只需手动调用document.FormAzmoon.submit();。

    还教我如何通过控制台重写和操作函数内的变量!

    如果您真的不得不采用这种方法,那几乎是不可能的,请参阅this question 了解详情。简而言之,您需要使用用户脚本(或在页面加载开始时运行的其他内容),使用 MutationObserver 拦截 &lt;script&gt; 标记的添加,并在检测到添加后摆弄其 textContent脚本。

    【讨论】:

    • 真的很感激 211k pro :)
    【解决方案2】:

    您确定您正确使用了 setTimeout 吗? 尝试在 Inspect 中将 setTimeout 更改为此:

    setTimeout(javascript_countdown.timer, 100000);
    

    如果这不起作用,请尝试不同的浏览器。也许 Firefox 不允许你在 Inspect 中创建计时器

    【讨论】:

    • OP 的版本也可以工作,传递给setTimeout 的字符串会被静默地评估为代码。当然,字符串评估方法是not recommended。
    • 尝试在 Inspect 中将 setTimeout 更改为此:但是我应该在哪里更改呢?在调试器中,您无法更改任何内容 - 在 Inspector Tab 中,您更改它时不会发生任何事情。唯一的方法是控制台...
    猜你喜欢
    • 1970-01-01
    • 2014-12-06
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2017-05-28
    相关资源
    最近更新 更多