#javascript #jquery #google-chrome #modal-dialog #popup
Вопрос:
у меня есть проект IE, который я хочу изменить на chrome. У меня проблемы с всплывающими окнами, потому что я использую showmodaldialog, и поэтому он не интерпретируется chrome.
Меня также беспокоит то, что мое приложение содержит всплывающие окна во всплывающих окнах, и поэтому мне нужно заблокировать самое последнее всплывающее окно. Я хочу заставить пользователя закрыть или проверить текущее всплывающее окно.
Я видел много исправлений, но ничего простого, я просто изменяю с помощью window.open(). Мне нужно знать, существует ли что-то, чтобы заменить showmodaldialog, не нарушая мои 300 всплывающих окон..
Если у вас есть какие-либо проекты / демонстрации по этому вопросу, спасибо
Мой код, т. е. javascript :
function modal_opw(_url, _params, _width, _height, _title) { _url_choix_client = _url; _url_params = _params; _url_popup = 'popup_search_redirection.htm'; if (_url.indexOf('geocodage') !== -1 || _url.indexOf('recup_adresse_normalisation') !== -1 || _url.indexOf('impression_tournee') !== -1 || _url.indexOf('intervention_transfert') !== -1) _url_popup = 'popup_search_redirection_google.htm'; if (_url.indexOf('impression_tournee_affichage_detail_tournee') !== -1) _url_popup = 'popup_search_redirection.htm'; _titre = _title; _height = parseInt(_height, 10) 50; _width = parseInt(_width, 10); var _popup = window.showModalDialog( _URL_SITE _url_popup, self, 'toolbar:0;location:0;directories:0;status:0;menubar:0;scroll:1;resizable:0;help:0;dialogWidth:' _width 'px;dialogHeight:' _height 'px;center:1' ); return _popup; }
Я просто заменяю на :
(function () { window._smdName = window._smdName || Math.round(Math.random() * 1000000000); window.spawn = window.spawn || function (gen) { function continuer(verb, arg) { var result; try { result = generator[verb](arg); } catch (err) { return Promise.reject(err); } if (result.done) { return result.value; } else { return Promise.resolve(result.value).then(onFulfilled, onRejected); } } var generator = gen(); var onFulfilled = continuer.bind(continuer, 'next'); var onRejected = continuer.bind(continuer, 'throw'); return onFulfilled(); }; 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 opt = opt .replace(/dialog/gi, '') // remove all of dialog strings .replace(/ /g, '') // remove all blank characters .replace(/:/g, '= ') // replace all of ':' to '= ' .replace(/,|;/g, ', ') // replace all of ',' or ';' to ', ' .replace(/width/gi, 'width') // replace all 'width' to lowercase .replace(/height/gi, 'height') // replace all 'height' to lowercase .replace(/(d )px/g, '$1'); // remove all of 'px' console.log(opt); var caller = showModalDialog.caller.toString(); var dialog = window.open(url, 'smd_dialog_' window._smdName, opt, false); dialog.dialogArguments = arg; dialog.addEventListener('unload', function (e) { e.preventDefault(); }); // if using yield if (caller.indexOf('yield') gt;= 0) { return new Promise(function (resolve, reject) { dialog.addEventListener('unload', function () { var returnValue = dialog.returnValue; resolve(returnValue); }); }); } // if using eval var isNext = false; var nextStmts = caller .replace(/(window.)?showModalDialog([^)] )/g, 'showModalDialog(%%%%%%%)') .split('n') .filter(function (stmt) { if (isNext || stmt.indexOf('showModalDialog(') gt;= 0) return isNext = true; return false; }); var unloadEventHandler = function () { if (dialog.location.href == 'about:blank') { return setTimeout(function () { dialog.addEventListener('unload', unloadEventHandler); }, 250); } var returnValue = dialog.returnValue; nextStmts[0] = nextStmts[0].replace(/(window.)?showModalDialog(%%%%%%%)/g, JSON.stringify(returnValue)); eval('{n' nextStmts.join('n')); }; dialog.addEventListener('unload', unloadEventHandler); throw 'Execution stopped until showModalDialog is closed'; }; })(); function opw(_url, _nom, _width, _height) { msw = window.open(_url, _nom, 'menubar=0,scrollbars=1,width=' _width ',height=' _height ',resizable=0,toolbar=0'); }