После полудня исследований и благодаря ответу @ SpYk3HH я нашел решение, которое работает в версиях, которые я сейчас использую:
IE: 9.0.8 ...
FireFox: 15.01
Хром: 23,0.1271,97 м
Safari: 5.1.7
При подготовке html для отображения на определенной странице для печати включите проверку для
if (oWindow == null || oWindow.closed || typeof(oWindow) == "undefined")
, а затем уведомить пользователя о временном разрешении всплывающих окон. Чтобы разрешить открытие вашей страницы, откройте диалоговое окно печати и закройте после закрытия диалогового окна печати, добавьте эту функцию в функцию загрузки для тела окна:
function PrintPage()
{
self.print();
self.onmouseover = (function() { window.close(); }
}
Причина, по которой это работает, заключается в том, что в основном мы все еще имеем дело с объектами и событиями. Браузеры могут вести себя по-разному в некоторых вещах, но у них всех есть общие интересы. Мы надеемся, что простое событие onmouseover всегда будет происходить, когда окно приобретает фокус, и, надеюсь, этот код не потеряет своей актуальности.