我想运行“ window.googletag.pubads()。refresh();”用户滚动> 2000px时一次。如何正确执行?举个例子:

    $(window).scroll(function() {
    var st = $(this).scrollTop();
    var lastScrollTop = 2000;

    if (st > lastScrollTop) {
        window.googletag.pubads().refresh();
        console.log('refresh');
    }
});

最佳答案

我认为添加名为booleanflag数据类型不是很全面,特别是当OP似乎不了解是否需要布尔值时。它没有告诉他完成这项工作所需的条件。上面的答案是正确的,但是对于将来使用此问题的人们来说可能并不全面,他们可能不理解您所说的“标志”是什么意思。

不知道何时使用boolean数据类型是此处更大问题的征兆,应加以说明,因此OP不会继续处于无知状态。

您需要的是boolean variable。本质上,您想检查某些事情是否正确。我们已经滚动到该位置了吗?不,让我们触发它。我们已经做到了吗?然后它将不会再次滚动,直到刷新页面。

让我们创建布尔:var scrolledToPosition = false;。必须将其放置在滚动逻辑之外,否则每次都会将其重置,并且将无法使用。

您希望一开始将其设置为false,以便随后的其他逻辑将正确触发。

然后,在if语句if (st > lastScrollTop)中,您要添加&& !scrolledToPosition

感叹号表示“不是”。例如,如果bool scrolledToPosition等于false,则可以使用!booleanValue进行检查。您可以排除感叹号以检查其是否正确。例如,if (scrolledToPosition)

这是完整的代码:

var scrolledToPosition = false;
var lastScrollTop = 2000;

$(window).scroll(function() {
    var st = $(this).scrollTop();

    if (st > lastScrollTop && !scrolledToPosition) {
        window.googletag.pubads().refresh();
        console.log('refresh');
        scrolledToPosition = true;
    }
});


如果您需要重置它,只需将scrolledToPosition设置为false。像这样:

scrolledToPosition = false;

10-01 10:44