Как вызвать функцию внутри окна кендо? - PullRequest
0 голосов
/ 02 июня 2018

У меня есть страница (A.html), которая откроет окно кендо с iframe (B.html) внутри.Вот моя конфигурация, чтобы открыть окно кендо в A.html:

var contentUrl = 'B.html';
var window = $("<div id='dvB' />").kendoWindow({
    title: "B", content: contentUrl, animation: false,
    resizable: false, modal: false, draggable: true, iframe: true, height: 550, width: 430,
            close: function () {
                this.destroy();
            }
        }).data('kendoWindow');
        window.open();

Так что теперь я хочу вызвать функцию retrieveFunction () в B.html из A.html.Я пытаюсь сделать это, как показано ниже:

Window = $('#dvB').data('kendoWindow');
Window.retrieveFunction();//not work

var windowElement = $("#dvB");
var iframeDomElement = windowElement.children("iframe")[0];
var iframeDocumentObject = iframeDomElement.contentDocument;
iframeDocumentObject.retrieveFunction(); //not work

Кто-нибудь знает, как этого добиться?

1 Ответ

0 голосов
/ 02 июня 2018

Вы можете вызвать пользовательское событие из B.html и передать функцию в качестве параметра и прослушать его в A.cshtml, что-то вроде этого:

B.html

<script>
    function retrieveFunction() {
        console.log('retrieveFunction');
    }

    $(function () {
        window.parent.$('body').trigger('customEvent', { func: retrieveFunction});
    });
</script>

A.html

<script>
    $(function () {
        $('body').on('customEvent',
            function(event, data) {
                console.log('triggered');
                data.func();
            });

        $("<div id='dvB' />").kendoWindow({
            title: 'B', content: contentUrl, animation: false,
            resizable: false, modal: false, draggable: true, iframe: true, height: 550, width: 430,
            close: function () {
                this.destroy();
            }
        }).data('kendoWindow').open();
    });
</script>
...