我有一个指示,旨在将固定的类应用于插入的DOM元素,为此,我还将事件侦听器附加到要在用户滚动时运行的window对象。
我的问题是,我的元素被销毁时是否应该删除此事件侦听器?我听说滚动事件会影响性能,并且我不确定每次刷新页面时事件侦听器是否会自动销毁(我的应用程序不是SPA,而是带有vue前端的laravel应用程序)。
这是我的指令:
Vue.directive('scroll-apply-class', {
isLiteral: true,
inserted: (el, binding, vnode) => {
let scrolled = false;
let stickyTop = 300;
setTimeout(function(){
stickyTop = el.offsetTop;
checkPosition();
window.addEventListener('scroll', function(e) {
scrolled = true;
});
}, 2500);
let checkPosition = function(){
if (window.pageYOffset > stickyTop && window.innerWidth > 765) {
el.classList.add(binding.value)
}
else {
el.classList.remove(binding.value)
}
};
let timeout = setInterval(function() {
if (scrolled) {
scrolled = false;
checkPosition();
}
}, 2500);
}
});
红颜莎娜
慕的地6264312
相关分类