当前位置:  开发笔记 > 编程语言 > 正文

我可以使用任何钩子从Chrome扩展程序中将模板和功能完全注入到Ember应用程序中吗?

如何解决《我可以使用任何钩子从Chrome扩展程序中将模板和功能完全注入到Ember应用程序中吗?》经验,为你挑选了0个好方法。

我是一个非常快速聚集在一起的开源团队的一员.我们都使用预算编制的应用程序,它总是一个桌面应用程序.他们刚从头开始发布了一个完整的重写,现在使用Ember应用程序在网上发布.

当然,与任何重写一样,许多功能都没有为发布做好准备,而且高级用户非常沮丧.我个人喜欢某些不存在的功能,但不是对此抱怨而已,我决定只使用Chrome扩展程序添加我想要的功能.

事实证明这很受欢迎,但我们现在所做的主要是微小的表面更新和CSS黑客攻击.当我们想要注入DOM元素或类似元素时,我们依赖于这样的脆弱的hacks:

(function checkCreditBalances() {

    if ( typeof Em !== 'undefined' && typeof Ember !== 'undefined' && typeof $ !== 'undefined' && $('.is-debt-payment-category.is-master-category').length ) {
            // Do stuff here with thing
    }
}

setTimeout(checkCreditBalances, 300);
)();

当我阅读Ember文档时,它总是讨论在构建实际应用程序时要做什么.我不是,所以在创建应用程序时调试标志对我没有帮助.我没有构建模板等等.Ember检查员不认识它是一个ember应用程序,因为它已经是一个生产版本.

我需要能够更深入地(但安全地)挂钩到应用程序中以添加更多高级功能.所以:

我们可以抓住任何内部钩子来告诉我们何时渲染组件,它是什么,并且如果它是我们想要的那个,我们有机会将DOM元素注入其中?或者替换实例化时使用的模板?或者添加事件处理程序?

是否有一种干净的方式来告诉应用程序何时加载,我们可以将我们的逻辑注入顶部?

有没有办法替换整个应用程序的某个组件?这个特殊的应用似乎在窗口上定义了Em和Ember,我不知道为什么,因为两者似乎都拥有非常相似的对象.

有没有一种方法可以将点击处理程序(或一般的事件处理程序)附加到组件上?

如何从Ember外部与Ember Data进行交互?它是一样的,还是应该记住什么?我知道我可以使用Ajax调用进行复制,但我假设Ember Data正在进行一些缓存和其他优点,并希望利用应用程序已经在后端进行的调用(如果可能的话).

基本上,任何人都可以向我提供有关如何从Chrome扩展程序向Ember应用程序注入内容的任何指示吗?

谢谢!

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有