首先,我不想了解有关 Ember 的一切。我只想在现有的 Ember 应用程序上使用它来提取有关应用程序状态的信息。
我正在开发一个 Chrome 扩展程序,让用户可以从 Vine 网站下载“原始”Vine 视频。
Vine 基本上是一个 Ember 应用程序。您可以轻松地使用 Ember Inspector 扩展来内省(introspection)应用程序,并从应用程序状态深处手动提取视频 URL。
似乎没有可靠的方法仅使用 DOM 来提取这些 URL,因为 Vine 使用“blob URL”。所以我想的是,我会做一些类似于 Ember Introspector 正在做的事情,在应用程序上使用反射/内省(introspection)。
如何从内容脚本访问 Ember 应用程序(及其状态)?
最佳答案
根据评论,您对 Chrome 扩展相当熟悉,您的问题可以归结为“Ember Inspector 如何在高级别上工作”。
同样,从评论中可以明显看出,Ember Inspector 采用了一种有时称为“注入(inject)脚本”或“页面级脚本”的技术。
内容脚本可以插入 <script>
标记到页面中,这将违反 isolated context内容脚本驻留在页面上下文中并将在页面上下文中执行。因此,您可以访问 Ember 的所有“内部”:您现在处于相同的 JS 上下文中。您可以查看this question了解注入(inject)此类脚本的方法。
剩下的问题是如何在注入(inject)的脚本和内容脚本之间进行通信,因为注入(inject)的脚本无法再访问 Chrome API。例如,可以使用 custom events 来完成此操作。 .
关于javascript - 对 Ember 应用程序进行反射(reflection)/内省(introspection)以查找特定模型的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35161714/