对 Ember 应用程序进行反射/自省,以查找特定模型的实例

Reflection/introspection on an Ember application to find instances of a specific model

本文关键字:查找 模型 实例 自省 应用程序 Ember 反射      更新时间:2023-09-26

首先,我不想了解Ember的一切。我只想在现有的 Ember 应用程序上使用它来提取有关应用程序状态的信息。

我正在开发一个Chrome扩展程序,让用户从Vine网站下载"原始"Vine视频。

Vine基本上是一个Ember应用程序。您可以轻松地使用 Ember Inspector 扩展来侦测应用程序,并从应用程序状态的深处手动提取视频 URL。

似乎没有可靠的方法来仅使用 DOM 提取这些 URL,因为 Vine 使用"blob URL"。所以我的想法是,我会做一些类似于 Ember 内省器正在做的事情,在应用程序上使用反射/内省。

如何从内容脚本访问 Ember 应用程序(及其状态)?

通过评论,您对Chrome扩展程序相当熟悉,您的问题归结为"Ember Inspector如何在高层次上工作"。

同样,从评论中可以清楚地看出,Ember Inspector采用了一种有时称为"注入脚本"或"页面级脚本"的技术。

内容脚本可以在页面中插入 <script> 标记,这将破坏内容脚本所在的独立上下文,并将在页面的上下文中执行。因此,您可以访问 Ember 的所有"内部":您现在处于相同的 JS 上下文中。您可以查看此问题以了解注入此类脚本的方法。

剩下的问题是如何在注入的脚本和内容脚本之间进行通信,因为注入的脚本不再有权访问Chrome API。例如,这可以通过自定义事件来完成。