У меня была похожая проблема с этим, и, похоже, это произошло потому, что в IE9 (и в любом IE) метод focus () запускается до отображения окна.
Чтобы обойти это, естьЭто можно исправить двумя способами:
- Установить таймер для загрузки фокуса через небольшой промежуток времени.
- Отложить JavaScript для чтения, пока окно не будетполностью обработанный.
Метод таймера для меня не является моим предпочтительным выбором, так как, по моему личному мнению, он грязный, и если страница загружается дольше, чем таймер, вы застряли с той же проблемой.Чтобы реализовать таймер, вы можете использовать что-то вроде:
Page.RegisterClientScriptBlock("Main_Window", "<script>" +
"setTimeout(function() { " +
"var newwindow; " +
"newwindow = window.open('" + "/dashboard/dashboard.aspx" + "', 'main_app_window', ' toolbar=0,location=0,directories=0,status=1,menubar=0,left=1,top=1,scrollbars=" + "1" + ",resizable=1,width=" + "1280" + ",height=" + "800" + "'); " +
"if (window.focus) " +
"{newwindow.focus();} " +
"}, 5);" +
"</script>");
Я установил задержку в 5 секунд, что может быть излишним.
Метод отсрочки - мой предпочтительный выбор, как я его чувствуючище и проще, но может работать или не работать:
Page.RegisterClientScriptBlock("Main_Window", "<script type="text/javascript" defer="defer">" +
"var newwindow; " +
"newwindow = window.open('" + "/dashboard/dashboard.aspx" + "', 'main_app_window', ' toolbar=0,location=0,directories=0,status=1,menubar=0,left=1,top=1,scrollbars=" + "1" + ",resizable=1,width=" + "1280" + ",height=" + "800" + "'); " +
"if (window.focus) " +
"{newwindow.focus();} "
+ "</script>");