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

时间:2016-02-02 19:00:21

标签: javascript ember.js reflection google-chrome-extension introspection

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

我正在开发Chrome扩展程序,以便用户下载" raw"来自Vine网站的Vine视频。

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

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

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

1 个答案:

答案 0 :(得分:0)

根据评论,您对Chrome Extensions非常熟悉,您的问题归结为“Ember Inspector如何在高水平上运作”。

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

内容脚本可以在页面中插入<script>标记,这将违反内容脚本所在的isolated context,并将在页面的上下文中执行。因此,您可以访问Ember的所有“内部”:您现在处于相同的JS环境中。您可以查看this question注入此类脚本的方法。

剩下的问题是如何在注入的脚本和内容脚本之间进行通信,因为注入的脚本不再能够访问Chrome API。例如,可以使用custom events来完成此操作。