如何等到在 iframe 中绘制 adobe 动画画布?

Posted

技术标签:

【中文标题】如何等到在 iframe 中绘制 adobe 动画画布?【英文标题】:How to wait till adobe animation canvas drawn in iframe? 【发布时间】:2021-02-08 19:30:30 【问题描述】:

Adobe Animate Canvas 生成内容,我将该内容附加到 iframe 中。然后画布并在 iframes 文档中创建各种脚本变量。

我需要访问adobe动画的iframe完全加载时生成的变量'stage'。

我现在必须做的 - 附加 setTimeout 然后它似乎可以访问。 如果我不附加超时,控制台会抛出错误。

我想要实现的 - 我想避免 setTimeout 并以更好的方式重构代码。

我试过jquery:

$element.on( 'load', function() 
    // Gives error when accessing the stage property
    $element[0].contentWindow.stage
    // allows to access stage property
    setTimeout(() => 
        console.log($element[0].contentWindow.stage)
    , 1000)
);

【问题讨论】:

我不会抱怨投反对票,但至少您可以提供帖子缺少的信息。 您实际上必须在 iframe 中执行此操作,然后在加载时告诉父级我完成了,继续! 【参考方案1】:

所以基本上我已经尝试了很多建议。

试过了:

$(element).load
$(element).on('load')
Other stuff...

对我有用的是这段代码:


    var onFullLoad = function(iframe) 
        return new Promise((resolve) => 
          var wait = function() 
            if (iframe && iframe.contentWindow && iframe.contentWindow.YourTargetedVariable) 
              resolve(iframe);
             else 
              window.requestAnimationFrame(wait);
            
          ;
          wait();
        )
      ;

那么你可以这样继续下去:

onFullLoad(yourTargetIframe).then(function()
//your code
);

【讨论】:

以上是关于如何等到在 iframe 中绘制 adobe 动画画布?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Adob​​e Animate 中悬停时反向播放动画?

如何在 Beamer 上添加 gif/动画(Adobe 停用 Flash)

如何播放动画,然后在悬停时反向播放,再次开始播放,直到在 Adob​​e Animate (Flash) 中使用悬停结束?

如何让函数等到动画完成?

让脚本等到 iframe 加载完毕后再运行

使脚本等到iframe加载后再运行