首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在纯JavaScript的addEventListenter上添加“如果未点击”条件?

是否可以在纯JavaScript的addEventListenter上添加“如果未点击”条件?
EN

Stack Overflow用户
提问于 2018-12-28 10:57:34
回答 1查看 51关注 0票数 0

假设,我想要在点击特定颜色的气泡(1)时增加分数的游戏。如果出现的气泡没有点击,分数将会降低,甚至游戏将结束。

使用addEventListener 'click‘事件来征服数字1很容易,但是我怎么才能做到2呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-29 16:54:16

这取决于你的气泡的行为。正如@CertainPerformance所提到的,您可以使用setTimeout,但是当您谈论气泡时,我想象一个气泡将升向天空,因此您还可以使用Intersection Observer API来检测气泡何时离开视口,例如:

代码语言:javascript
复制
var bubble = document.getElementById('bubble');

var options = {
  root: document.querySelector('#window'),
  rootMargin: '0px',
  threshold: 0
}

var callback = function(entries, observer) { 
  entries.forEach(entry => {
    if (!entry.isIntersecting) {
      bubble.parentNode.removeChild(bubble);
      alert('You missed it!');
    }
  });
};

var observer = new IntersectionObserver(callback, options);

observer.observe(bubble);

bubble.addEventListener('click', function() {
  observer.unobserve(bubble);
  alert('Got it!');
  bubble.parentNode.removeChild(bubble);
});
代码语言:javascript
复制
#window {
  background: blue;
  border: 1px solid black;
  height: 250px;
  overflow: hidden;
  position: relative;
  width: 500px;
}

#bubble {
  animation: fly 5s normal;
  background: red;
  border-radius: 20px;
  height: 40px;
  left: 150px;
  position: absolute;
  width: 40px; 
}

@keyframes fly {
  from {
    top: 250px;
  }
  to {
    top: -100px;
  }
}
代码语言:javascript
复制
<div id="window">
  <div id="bubble"></div>
</div>

请记住,Internet Explorer不支持交叉点观察者API,对于不受支持的浏览器,您需要一个polyfill

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53953190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档