无法重新显示 Swiffy 电影

Cannot re-display Swiffy movie

我们的网络应用程序(在线广告活动控制台)支持使用 Swiffy 从 Flash 转换的广告标签。在我们的 UI 中,我们有一个页面,您可以在其中预览和编辑广告,一些更改会导致预览(IFRAME)重新加载更新后的预览(例如,如果我们更改 URL 通过作为广告的 clickTag 值)。

我们第一次显示 Swiffy 预览时,一切正常;但在第二次和随后的尝试中,我们在浏览器 (Chrome 43.0.2357.130) 控制台中看到以下内容:

Uncaught TypeError: Cannot redefine property: __swiffy_override
  (anonymous function) @ runtime.js:163
  (anonymous function) @ runtime.js:799

看来这里发生的事情是 Swiffy 在使用 Object.defineProperty(Date,"__swiffy_override",{value:Fh})。根据MDN,除非你在第三个参数中指定{configurable: true},否则你会得到这个异常。

我们目前正在使用来自 Google 的 CDN (https://www.gstatic.com/swiffy/v7.2.0/runtime.js) 的 runtime.js 版本。当然,我们可以将其复制到我们自己的 CDN 中并编辑 javascript,但这有明显的可维护性问题。

这是否应该作为错误报告给 Google? (如果是这样,如何做到这一点?)

这是其他人 运行 遇到的问题,并且有解决方法吗?

听起来你在更新预览时实际上并没有重新加载 IFRAME 的内容,否则应该不会出现错误,Date.__swiffy_override 不会在那个时候定义。

如果您无法完全重新加载 IFRAME 的内容,是否可以只加载一次 Swiffy 运行时,并为每个预览更新创建一个新的 swiffy.Stage?

请注意,我没有对此进行测试,它在某些情况下可能不起作用(如果有的话)。例如,我会特别注意使用不同的 ActionScript 版本创建 swiffy.Stages。安全的做法是每次都完全重新加载 IFRAME。