1

ポップアップウィンドウから親ページの関数を呼び出そうとしています。エラーが発生し続けるObject doesn't support property or method 'GetValueFromChild'.エラーはポップアップウィンドウのこの行にあると思います- window.top.opener.parent.Xrm.Page.GetValueFromChild(person);。使用してみwindow.opener.GetValueFromChild(person);ましたが、同じエラーが発生します。どんな助けでも大歓迎です。これがコードです-

    //parent
    $(document).ready(function () {
        // This needs to be called from Child window
        function GetValueFromChild(person) {
            alert(person.Id);
            alert(person.Name);
            alert(person.Market);
        }    
    });


//parent - jqgrid

    colModel: [
                            {
                                name: 'Person', index: 'PersonName', width: 70, editable: true, edittype: 'button',
                                editoptions: {
                                    value: 'Select',
                                    dataEvents: [{
                                        type: 'click',
                                        fn: function (elem) {
                                            var left = (screen.width / 2) - (700 / 2);
                                            var top = (screen.height / 2) - (550 / 2);

                                            var popup = window.open("popup.htm", "popup", "resizable=1,copyhistory=0,menubar=0,width=700,height=550,left='+left+',top='+top");
                                            popup.focus();
                                        }
                                    }]
                                }
                            },

//ポップアップウィンドウ。このページには、別のjqgridと[OK]ボタンがあります。

  $('#btnOK').click(function() {
                        var person= {
                            Id: grid.jqGrid('getCell', grid.getGridParam('selrow'), 'Id'),
                            Name: grid.jqGrid('getCell', grid.getGridParam('selrow'), 'Name'),
                            Market: grid.jqGrid('getCell', grid.getGridParam('selrow'), 'Market')
                        };

                        window.top.opener.parent.Xrm.Page.GetValueFromChild(person); //Error is on this line.
                        window.close();
                    });
4

1 に答える 1

1

あなたはあなたのコールバックGetValueFromChildにスコープされています。ready他のスコープ関数や変数にアクセスする必要がない場合は、代わりに最上位で宣言するだけです。それらにアクセスする必要がある場合は、コールバックでグローバル参照を作成する必要があります。

  1. 最上位で次のように宣言します。

    // This needs to be called from Child window
    function GetValueFromChild(person) {
        alert(person.Id);
        alert(person.Name);
        alert(person.Market);
    }
    
  2. スコープからエクスポート:

    $(document).ready(function () {
        // This needs to be called from Child window
        function GetValueFromChild(person) {
            alert(person.Id);
            alert(person.Name);
            alert(person.Market);
        }
        window.GetValueFromChild = GetValueFromChild;
    });
    
于 2013-01-20T18:01:24.433 に答える