从iframe中调用父敲除功能?

时间:2017-03-20 19:01:21

标签: iframe knockout.js parent

我有一个带有iframe的淘汰应用程序。我想在iframe中调用我的淘汰赛中的一个函数。

我在这里看到几个答案,说使用parent.myFunction()应该可以工作,但我猜测如果你没有使用淘汰赛,因为那对我来说并不适合。

以下是一个精简的示例:https://embed.plnkr.co/pCZCv73UpxTLOpClwxdX/

如何让iFrame中的按钮调用与iFrame外部按钮相同的功能?

感谢。

1 个答案:

答案 0 :(得分:1)

使用下面的bindIframe custom binding非常简单。基本上,它会在iframe文档加载后调用ko.applyBindings

ko.bindingHandlers.bindIframe = {
    init: function(element, valueAccessor) {
        function bindIframe() {
            try {
                var iframeInit = element.contentWindow.initChildFrame,
                    iframedoc = element.contentDocument.body;
            } catch(e) {
                // ignored
            }
            if (iframeInit)
                iframeInit(ko, valueAccessor());
            else if (iframedoc)
                ko.applyBindings(valueAccessor(), iframedoc);
        };
        bindIframe();
        ko.utils.registerEventHandler(element, 'load', bindIframe);
    }
};

https://embed.plnkr.co/Hvv2Mx3NZKc9iuS61TXD/