我想运行“ 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');
}
});
最佳答案
我认为添加名为boolean
的flag
数据类型不是很全面,特别是当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;