AddEventListener to SharePoint Модальное окно, чтобы родительское окно могло выполнять функцию, объявленную внутри Модального окна. - PullRequest
0 голосов
/ 06 июня 2018

Следующий код, включенный в $ (документ) .ready модального окна, не работает.По-видимому, iframe модального окна SharePoint еще не был загружен в DOM, когда запускается addEventListener.Каков будет правильный подход к решению этой проблемы?

window.addEventListener("message", function(event) {
            if(event.data == "openpi");{
                alert(1)
            }
        });

Спасибо!

1 Ответ

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

В SP.UI.ModalDialog.showModalDialog есть опция dialogReturnValueCallback, вы можете получить значение из диалогового окна и затем использовать его в родительском окне.

<script type="text/javascript">
     //******** Dialog with Data from Pop Up Starts Here ***********/
     function openDialogAndReceiveData(tUrl, tTitle) {
         var options = {
             url: tUrl,
             title: tTitle,
             dialogReturnValueCallback: onPopUpCloseCallBackWithData
         };
         SP.UI.ModalDialog.showModalDialog(options);
     }

     function onPopUpCloseCallBackWithData(result, returnValue) {
         if(result== SP.UI.DialogResult.OK)
         { 
             SP.UI.Status.removeAllStatus(true);
             var sId = SP.UI.Status.addStatus("Data successfully populated to text boxes from Pop-up");
             SP.UI.Status.setStatusPriColor(sId, 'green');
             document.getElementById('<%= txtData1.ClientID %>').value = returnValue[0];
             document.getElementById('<%= txtData2.ClientID %>').value = returnValue[1];
         }else if(result== SP.UI.DialogResult.cancel)
         {
             SP.UI.Status.removeAllStatus(true);
             var sId = SP.UI.Status.addStatus("You have cancelled the Operation !!!");
             SP.UI.Status.setStatusPriColor(sId, 'yellow');
         }
     }
     //******** Dialog with Data from Pop Up Ends Here ***********/
 </script>

Подробности см. Здесь

...