当iframe不在视图中时停止iframe javascript计时器

当iframe不在视图中时停止iframe javascript计时器,javascript,iframe,Javascript,Iframe,我正在写一篇博客文章,其中有几个区域显示了一些HTML5/Javascript动画。(我使用iFrame是因为博客框架本身不允许我包含任何自定义Javascript。) 这些动画在某种程度上是计算密集型的,所以我想知道是否有任何方法可以让iframe中的Javascript在它不在视图中时进行检测,并暂停执行,直到它重新进入视图。有办法做到这一点吗 (顺便说一句,我托管iframe的站点与父文档的域不同,因此我想这会因为同源策略问题而变得更加困难/不可能。)哦,看起来它可以帮助我;大多数最新浏览

我正在写一篇博客文章,其中有几个
区域显示了一些HTML5/Javascript动画。(我使用iFrame是因为博客框架本身不允许我包含任何自定义Javascript。)

这些动画在某种程度上是计算密集型的,所以我想知道是否有任何方法可以让iframe中的Javascript在它不在视图中时进行检测,并暂停执行,直到它重新进入视图。有办法做到这一点吗

(顺便说一句,我托管iframe的站点与父文档的域不同,因此我想这会因为同源策略问题而变得更加困难/不可能。)

哦,看起来它可以帮助我;大多数最新浏览器似乎都支持这样的功能,即当目标元素的“交集比率”超过一个或多个阈值时,可以调用回调函数。(还有一个)

document.addEventListener(“DOMContentLoaded”),函数(事件){
功能可观察性(目标、阈值、功能)
{
var callback=函数(条目,观察者){
对于(变量i=0;i
document.addEventListener("DOMContentLoaded", function(event) {
  function observeForVisibility(target, thresholds, func)
  {
    var callback = function(entries, observer) { 
      for (var i = 0; i < entries.length; ++i)
      {
        if (entries[i].target == target)
        {
          func(target, entries[i].intersectionRatio);
        }
      }  
    }  
    var observer = new IntersectionObserver(callback, 
       {threshold: thresholds});
    observer.observe(target);
  }

  var target = document.getElementById('some_id');
  observeForVisibility(target, [0], function(target, ratio)
    { console.log(target, ratio); }); 

});