Javascript 如何关闭通过另一个函数的多边形填充生成的showModalDialog()?

Javascript 如何关闭通过另一个函数的多边形填充生成的showModalDialog()?,javascript,function,showmodaldialog,Javascript,Function,Showmodaldialog,我的代码使用了以下showModalDialog polyfill。它似乎工作良好,除了我不能关闭它没有按下关闭按钮的iframe (function() {window.showModalDialog = window.showModalDialog || function(url, arg, opt) { url = url || ''; //URL of a dialog arg = arg || null; //arguments to a dialog opt

我的代码使用了以下showModalDialog polyfill。它似乎工作良好,除了我不能关闭它没有按下关闭按钮的iframe

(function() {window.showModalDialog = window.showModalDialog || function(url, arg, opt) {
    url = url || ''; //URL of a dialog
    arg = arg || null; //arguments to a dialog
    opt = opt/* || 'dialogWidth:300px;dialogHeight:200px'*/; //options: dialogTop;dialogLeft;dialogWidth;dialogHeight or CSS styles
    var caller = showModalDialog.caller.toString();
    var dialog = document.body.appendChild(document.createElement('dialog'));
    dialog.setAttribute('style', opt.replace(/dialog/gi, ''));
    dialog.setAttribute('id', 'dialogID');
    dialog.innerHTML = '<a href="#" id="dialog-close" style="position: absolute; top: 0; right: 4px; font-size: 20px; color: #000; text-decoration: none; outline: none;">&times;</a><iframe id="dialog-body" src="' + url + '" style="border: 0; width: 100%; height: 100%;"></iframe>';
    document.getElementById('dialog-body').contentWindow.dialogArguments = arg;
    document.getElementById('dialog-close').addEventListener('click', function(e) {
        e.preventDefault();
        dialog.close();
    });
    dialog.showModal();
    document.getElementById('dialog-body').addEventListener('click', function(e) {
        e.preventDefault();
        dialog.close();
    });
    dialog.addEventListener('close', function() {
       var returnValue = document.getElementById('dialog-body').contentWindow.returnValue;
        document.body.removeChild(dialog);
       nextStmts[0] = nextStmts[0].replace(/(window\.)?showModalDialog\(.*\)/g, JSON.stringify(returnValue));
       eval('{\n' + nextStmts.join('\n'));
    });        
    throw 'Execution stopped until showModalDialog is closed';
};
})();`
Window.close似乎不起作用。我无法将对话框中的单击值返回到父代码。有人能帮我找到解决办法吗?

试试这个:

dialogButtonClick = (dialogFlag) => {   
    if (dialogFlag == 'YES') { open(location, '_self').close(); }
        return false;   
}
dialogButtonClick = (dialogFlag) => {   
    if (dialogFlag == 'YES') { open(location, '_self').close(); }
        return false;   
}