У меня есть требование, чтобы некоторые модальные всплывающие окна появлялись на веб-странице. Сначала я реализовал их как настоящие модальные окна, но потом я обнаружил, что настоящие модальные окна не могут связываться с родительским окном в IE.
Теперь я пытаюсь реализовать их как обычные окна, которые всегда крадут фокус, что-то вроде работы.
Вот код, который я использую:
modalPopup = window.open(url, 'popup', arr.join(",")); //use a global var here
modalPopup.focus();
$(window).bind("focus.modal", function(){
if(modalPopup){
modalPopup.focus();
} else {
$(window).unbind("focus.modal");
}
});
В этом есть несколько ошибок:
- В Firefox, когда я закрываю всплывающее окно, modalPopup не становится пустым, он указывает на родительское окно. (это нормально, так как в любом случае мы не поддерживаем firefox)
В IE он работает как шарм, когда вы открываете 1 окно и закрываете его, но открытие еще нескольких окон приводит к исключению:
Ошибка: вызываемый (сервер [не серверное приложение]) недоступен и исчез; все соединения недействительны. Вызов не выполнен.
edit : в IE ошибка возникает, когда modalPopup.focus (); называется. очевидно, modalPopup никогда не устанавливается в ложное значение при закрытии: P
Можете ли вы помочь мне написать лучшую реализацию, которая использует window.open для создания всплывающих окон?
Прежде чем кто-либо что-то скажет, использование лайтбокса не вариант . Всплывающие окна содержат TON html, javascript и т. Д., И загрузка их в DOM не приведет к хорошему UX. Кроме того, мы должны иметь эту работу на IE6.