自Angular 2起Gapi.iframes不起作用

时间:2018-09-21 14:53:47

标签: javascript angular iframe gapi

自Angular 2起,我对ng-gapi有问题。我需要显示Google“托管配置iframe”,并按照Google developper doc的步骤操作它在angularJS上运行,但是当我尝试时Angular 2+则没有。

this.gapiService.onLoad().subscribe((result:any)=> {
        gapi.load("gapi.iframes", function(){           

            var iframeContainer = document.getElementById('iframecontainer');

            var context = gapi.iframes.getContext();

            var options = {
              'url': this.url,
              'where': iframeContainer,
              'attributes': { 
                style: 'height:1200px', 
                scrolling: 'yes'
              }
            }

            var iframe = context.openChild(options);

            iframe.register('onconfigupdated', function(o) {
                console.log(o);
                this.data.mcmId = o.mcmId;                    
                this.dialogRef.close(this.data);
            } , function(data) { 
                return true; 
            });

            iframe.register('onconfigdeleted', function(o) {
                console.log(o);
                this.data.mcmId = null;                    
                this.dialogRef.close(this.data);
            } , function(data) { 

                return true; 

            });


        });
    });

问题在于我认为GAPI中不存在iframe,我需要使用Gapi渲染iframe以捕获“ onconfigupdated”和“ onconfigdeleted”事件。

1 个答案:

答案 0 :(得分:1)

因此,如果您不使用gapi JS库,那么期望您不会从iframe接收事件,您需要使用gapi JS库才能接收事件。

如果ng-gapi包装器不支持iframe,则可以扩展它以支持iframe或专门为您的用例创建自己的自定义包装器。