我开始为这个问题苦苦挣扎已经一周了。
我想为 Facebook 机器人创建一个 webview,我想要的只是获取用户的 psid。使用纯 JavaScript 一切都很顺利:我可以使用 window.extAsyncInit() 并等待 Facebook 初始化...但是如果我使用 Angular2,我能做什么?
我尝试将其添加到@Component:
host: {
'(window:extAsyncInit)': 'this.facebookinit($event)'
}
我尝试在组件内使用它来模仿滚动侦听器的行为:
@HostListener('window:extAsyncInit', ['$event']) onFbEvent($event){
console.log("called");
}
我尝试了在 stackoverflow 中找到的所有可能的组合......但我仍然被阻止。 目前,我解决了仅响应某些点击事件而调用 MessengerExtensions 的问题,但现在我确实需要它在 webview 出现时可用,并且避免未定义问题的唯一方法是使用 extAsyncInit。
你能帮我吗?
更新: 我也尝试过使用 Renderer2 监听,并将 facebook javascript 代码复制到 asset 文件夹中,并在导入列表下声明 MessengerExtension。但还是没有结果!
ngx-facebook 给你:) https://github.com/zyra/ngx-facebook
但是,我不知道它是否兼容最新的Angular。
实际上我为 Angular 创建了一个插件。我的主要动机是性能,因为 Facebook js 插件“杀死”了 Core Web Vitals。我的替代方法是创建一个假按钮,仅在单击时加载真实 Facebook 插件,并添加真实插件的所有选项和自定义,包括显示对话框、显示插件、隐藏插件等。
库:https://www.npmjs.com/package/ngx-facebook-messenger