ie8 window.focus не работает + работа с окнами, содержащими PDF документ
Сегодня наткнулся на достаточно злой баг Internet Explorer 8 ранних билдов.
Суть в том что конструкция
if( windowObjects && windowObject.focus ){ windowObject.focus(); }
может ни с того ни с сего падать с ошибкой Member not found при попытке установить фокус на окне с открытым PDF документом. Подробнее тут: http://bytes.com/topic/javascript/answers/558302-member-not-found-error-when-opening-pdfs-new-window
Вообще поведение IE8 до фикса http://support.microsoft.com/kb/979954 очень и очень странное при работе с PDF в отдельном окне. Если вы загружаете PDF документ, окно с ним тут же меняет свойства. Объект все еще есть, но в то же время его нельзя закрыть из родительского, в него нельзя запостить форму, можно только изменить document.location, тем самым закрыв PDF и дальше работая с окошком как с обычным.
Таким образом, если хотим вернуть контроль надо окном — просто меняем document.location на заготовленную пустую страницу. По-моему это самый правильный вариант. Но есть и много других решений, например — через mod_rewrite не допускать прямого открытия pdf, а вместо этого делать редирект на pdf.html?sorce=file.pdf. Страничка pdf.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> <meta name="generator" content= "HTML Tidy for Windows (vers 25 March 2009), see www.w3.org"> <title></title> </head> <frameset> <frame src="test.pdf"> </frameset> </html>
Решение, конечно, очень некрасивое, зато 100% работоспособное, может кому пригодится