2013-03-15 1 views
0

У моего клиента есть требование отображать экран «всплеск», когда пользователи входят в систему. В настоящее время мой клиент использует приложение Windows, которое создает класс System.Windows.Forms.WebBrowser для размещения веб-страницы, но по разным причинам это непригодно.Могу ли я обнаружить событие jscript window.close в элементе управления браузером, размещенном в форме Windows?

Мой клиент попросил меня создать свободную от хрома модальную форму Windows, которая будет содержать элемент управления браузера, на котором будет размещаться веб-страница. Эта страница состоит из сообщения и двух кнопок: «Да» (переход на другой URL) и «Нет» (закрывает браузер).

В текущем (неудовлетворительно) воплощении, «Нет» кнопка вызывает яваскрипт функцию, которая включает в себя

window.close(); 

Это прекрасно работает в данный момент, но, очевидно, если (в новом воплощении) веб-страница размещенный внутри элемента управления браузера внутри формы Windows, тогда window.close автоматически не перейдет в Windows Form.

Итак, есть ли способ для Windows Form «обнаружить» событие window.close, которое происходит в элементе управления браузером?

Надеюсь, что вышесказанное ясно.

Большое спасибо

Эдвард

+0

Вы можете добавить poller в форму Windows, чтобы проверить переменную DOM веб-страницы. Добавьте некоторый javascript, чтобы установить значение, когда кнопка «Нет» нажата и получит прибыль. – CodingBarfield

ответ

0

Вместо вызова window.close называют свою внешнюю C# функцию из JavaScript, что-то вроде этого

window.external.CloseWindow 

и установить объект как скриптинг

webBrowser1.ObjectForScripting = this; 

ваш класс C# должен иметь функцию CloseWindow

или переопределить window.close как

window.close=function() { window.external.CloseWindow(); } 
0

Спасибо всем.

С некоторыми дополнительными копаниями работает ответ Судхакара Б. Я должен был добавить

[System.Runtime.InteropServices.ComVisibleAttribute(true)] 

, чтобы украсить класс.

Смежные вопросы