当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); });
});