Элемент управления WebBrowser: как подавить сообщение: вы хотите закрыть это окно

Я новичок в управлении WebBrowser. В текущем проекте мы используем элемент управления WebBrowser для интеграции с существующим проектом. Все всплывающие окна отображаются в форме нового окна. Когда во всплывающем окне вызывается "javascript window: close", экземпляр IE всегда спрашивает: хотите ли вы закрыть это окно. Мы используем WndProce для проверки WM_Destroy, чтобы уведомить родительскую форму о том, что IE собирается закрыть, что отлично работает. Единственное, что нам не нравится в элементе управления - это сообщение «вы хотите закрыть это окно?». Есть ли способ подавить сообщение?

Любое предложение будет высоко оценено. Спасибо.


person Keping    schedule 21.09.2009    source источник


Ответы (2)


Попробуйте использовать любую из следующих двух функций, чтобы закрыть всплывающее окно:

function closeWindow()
{
    window.opener = self;
    window.close();
}

Or:

function closeWindow()
{
    window.open('', '_self');
    window.close();
}
person Druid    schedule 21.09.2009
comment
Второй вариант работал у меня в IE. Что именно вы даете браузеру делать? - person deostroll; 21.09.2009
comment
Он открывает новое окно без определенного URL-адреса с целевым '_self', что означает, что целевое окно - это окно, в котором оно запускается. Эффект состоит в том, что окна документов делают свое собственное окно открывающим окном и, таким образом, приобретают владение им. Тогда у него будет доступ к закрытию, так как он его открыл ... - person awe; 23.09.2009

Это функция безопасности IE. Идея состоит в том, чтобы не допустить, чтобы потенциально вредоносные сценарии закрывали окно, которое пользователь не хотел закрывать. Исключением является случай, когда окно было открыто сценарием в том же домене, что указывает на то, что это веб-приложение «владеет» окном, поэтому оно также может закрыть его. В этом случае вы не получите предупреждения.

person awe    schedule 21.09.2009
comment
но я все еще получаю предупреждение, хотя мои скрипты находятся в том же домене: / хорошая попытка, IE - но вы снова потерпели неудачу - person Sam Watkins; 18.02.2013
comment
@SamWatkins: Также может требоваться, чтобы в текущем сеансе использовалось одно и то же веб-приложение. - person awe; 25.02.2013
comment
Ключевое слово здесь - программируемое управление, а не приложение. - person Christian; 29.10.2019