0

这个脚本不是来自我的网站,我想打电话crocodile(),因为现在我必须等待 20 秒才能调用它。

我想通过浏览器控制台或 UserJS 或 Selenium 来实现它。

但是,我怀疑这是不可能的,如以下所述:

访问和修改匿名函数中的变量作为其他函数 JS/Angular 中的参数

这样对吗?我不确定,因为我对js的经验很少

$.fn.countdown = function (callback, duration, message) {
    var countdown = setInterval(
    ....
    callback.call(...);  
    ...

    , 1000);
};

$(document).ready(function () {

    var link = 'https://example.com/c?p=1';
    var userId = parseInt(2);

    if (isNaN(userId)) {
        ....
    } else {
        /* counts down 20 seconds before call */
        $(".countdown").countdown(crocodile, 20, "");  
    }


    function crocodile() {

        var _l = 'https://example.com/c?p=1';
        var _sID = parseInt(1);
        var _uID = parseInt(2);

        $.ajax({
            type: "GET",
            cashe: false,
            url: '/example',
            data: {
                idS: _sID,
                userId: _uID,
                link: _l
            },
            dataType: "json",
            traditional: true,
            success: function (data) {
                $(location).prop('href', data.url);
            }
        });
    }
});
4

1 回答 1

1

crocodile 函数是在 document ready 函数中定义的。这意味着它只能从该函数内调用,因为它不存在于该范围之外。如果您希望能够使用您的测试套件在外部调用它而不是等待 20 秒(或者至少是倒计时注释所说的),那么您必须将方法定义从文档就绪调用中移出火。

如果您希望在不等待很长时间的情况下进行测试,请考虑将 20 秒设置为可配置的,以便您的测试套件可以缩短它。此外,如果您在文档就绪调用之外定义鳄鱼函数,您实际上可以对该函数进行单元测试。

于 2018-12-01T03:57:40.643 回答