javascript - 如何让我的 Intersection Observer 只将 div 放在屏幕上一次而不在用户滚动时将其移除?
问题描述
我正在将广告延迟加载到我的网站中,并且只有当用户向下滚动足够远时才能显示它,但是当用户向上滚动时,div 就会消失。我希望这样当用户第一次看到 div 时,即使他滚动离开,广告也会出现并停留在那里。我也不希望广告令人耳目一新。我的代码是:
export const handleAds = () => {
var myAds;
window.addEventListener("load", function(event){
myAds = document.querySelector("#theDiv");
createObserver();
},false);
function createObserver(){
var observer;
var options = {
root: null,
rootMargin: "0px",
threshold: 0.2
};
observer = new IntersectionObserver(handleIntersect, options);
observer.observe(myAds);
}
function handleIntersect(entries,observer){
for (var i = 0; i < entries.length; i++){
if(entries[i].isIntersecting){
//ad script
}
}
}
}
解决方案
调用unobserve
您的回调:
https ://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/unobserve
function handleIntersect(entries,observer){
for (var i = 0; i < entries.length; i++){
if(entries[i].isIntersecting){
//ad script
observer.unobserve(entries[i]);
}
}
}
推荐阅读
- php - 照片在上传时旋转。PHP ImageMagick
- swift - 是否可以在 Swift 中添加多个触觉来一个接一个地播放?
- node.js - 在 package.json 之外的 nodeJS 中查找未使用的模块
- node.js - 更改标签文本大小?
- php - 如何使用 Eloquent 将查询参数连接到 Laravel 范围内的查询?
- google-apps-script - GoogleSheets ApsScript ReferenceError: ADDRESS is not defined详情
- r - 加载 R 包时出错:“检查 is.data.table(DT) == TRUE
- firebase - 浏览器中的 Flutter Firebase,如何进行设置?
- javascript - 如何使用 SQL 将动态添加的输入中的数据保存到数据库表中?
- c# - 从 Firebase 检索数据以创建带有按钮的滚动视图的问题