JS window.close () позволяет IE зависать - PullRequest
2 голосов
/ 26 мая 2010

по причине, по которой я не буду утомлять вас, я пишу приложение asp.net, которое должно открывать некоторые страницы в новых окнах браузера.

Мне удалось открыть их в постбэке (не спрашивайте почему, мне просто нужно было) с помощью этого кода:

script = String.Format(@"window.open(""{0}"", ""{1}"");", url, target);
ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true);

Теперь у меня есть новые окна, каждое из которых имеет кнопку, которая должна закрыть его. У меня просто onclick="window.close()" (но это подсказывает мне, когда я закрываю браузер) или window.open('','_self','');window.close() (ужасно, я согласен, но я нашел единственный способ избежать подсказки JS)

В Firefox он работает отлично, но в IE7 (браузере, который есть у наших клиентов) после того, как 2-3 раза я использую эту кнопку, чтобы закрыть окно, я не могу открыть другие окна (в обоих случаях, с приглашением JS или без него) , При использовании описанного выше метода он ничего не делает, а при <a href="mypage.aspx" target="_blank">click me</a> открывается новое окно, но зависает при загрузке (он даже не вызывает Page_Load).

В чем может быть причина? Как я могу решить это?

Спасибо.

EDIT:

Я забыл упомянуть, что я использую MS Ajax на большинстве страниц, и это может быть причиной, которая заставляет меня использовать window.open('','_self',''); до window.close() Я не знаю, может ли это привести к зависанию IE

Ответы [ 2 ]

0 голосов
/ 04 июня 2010

Я наконец пришел к решению:

в присвоении атрибута отсутствовал return false;.

Теперь он отлично работает с "window.open('','_self','');window.close();return false;".

0 голосов
/ 26 мая 2010

РЕДАКТИРОВАТЬ: игнорировать это, он по-прежнему подсказывает пользователю - извините!

Для вашего первого вопроса о закрытии окна вы пробовали:

self.close();

Не слишком уверен насчет проблемы зависания, я использую window.open () и никогда не сталкивался с проблемами в IE7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...