Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
 Аватар для DamirProger
1 / 1 / 0
Регистрация: 16.08.2008
Сообщений: 56

Перехватить закрытие браузера

19.08.2009, 12:59. Показов 3260. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
мне нужно перед полным выходом из браузера (т.е. если нажали на кнопку "Х" или выбрали обычный выход из браузера) - перехватить это событие, и сначала сохранить все мои данные, а потом можно и закрываться ...

вот мой способ, который характеризуется связью silverlight и javascript:

на стороне клиента-сильверлайт:
C#
1
2
3
4
5
6
7
8
public Page()
{
InitializeComponent();
//
HtmlDocument htmlDoc = HtmlPage.Document;
HtmlElement htmlEl = htmlDoc.GetElementById("body1");
htmlEl.AttachEvent("onunload", new EventHandler(Event_)); // onunload - событие ("закрытие") у элем.  Body в java
}
на стороне javascript (в SilverlightTestPage.html ), здесь я ток добавил элемент id для BODY, чтобы получить его на клиенте через метод GetElementById() :
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<body id="body1"> // вот тут добавил и всё , больше ничо не делал
 
<div id='errorLocation' style="font-size: small;color: Gray;"></div>
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/SocialMind.xap"/>
<param name="onerror" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="2.0.31005.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: groove"/>
</a>
</object>
<iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
</div>
 
</body>
Данный способ выполняется без ошибок и эксепшенов, но на деле ничего и не делает, т.е. не перехватывает он - закрытие браузера
жду ваших советов по решению проблемы !!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2009, 12:59
Ответы с готовыми решениями:

Программное закрытие браузера
А кто знает как прграммно закрыть аппликацию в silverlight?Типа Application.Exit() или this.Close();

Как перехватить закрытие Windows-приложения без формы
Я на C# создал приложение, выбрав проект WindowsForms. Но так как моя программа не должна иметь никаких окон, я удалил Form1.cs, а код...

Как перехватить и обработать закрытие окна броузера?
О наличии событий onunload и onbeforeunload я, разумеется, знаю, но они возникают не только при закрытии окна броузера, но и в ряде других...

3
 Аватар для BitFields
49 / 47 / 1
Регистрация: 03.08.2009
Сообщений: 101
21.08.2009, 13:04
А где метод Event_? Как без неё комплируется или что определено в этом методе.
1
 Аватар для DamirProger
1 / 1 / 0
Регистрация: 16.08.2008
Сообщений: 56
21.08.2009, 19:00  [ТС]
во-первых это не метод , а событие
во-вторых мне не надо грить что в этом событии писать, поэтому событие и не показал.
в-третьих этот способ не рабочий, а вот норм-ый, но все равно не подходит мне, кому надо смарите:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 
        public Page()
        {
            InitializeComponent();
            // подрубите еще system.windows.browser - если нету
            HtmlPage.Window.AttachEvent("onunload", new EventHandler(Handler));
        }
        public void Handler(object sender, EventArgs args)
        {
          // пиши что хош ! но не всегда все удачно успеет выполнится, данное событие немного 
// не то что мне нужно, есть такое событие , как onbeforeunload - у меня во 2 сильвере его нету,
//может в 3м сильвере есть, хз :) вот оно то что нуно!
        }
1
 Аватар для BitFields
49 / 47 / 1
Регистрация: 03.08.2009
Сообщений: 101
22.08.2009, 05:48
Почему не работает вполне нормально работает вот тебе код, проверить можно когда закрываешь браузер(события освобождения памяти из под объектов страницы).
C#
1
2
3
4
5
6
7
8
9
        public Page()
        {
            InitializeComponent();
            HtmlPage.Window.AttachEvent("onunload", new EventHandler(EventMethod));
        }
        private void EventMethod(object sender, EventArgs e)
        {
            MessageBox.Show("Выходим!");
        }
Во-вторых это управляемый код, обрабатывающий событие, а не само событие(само событие это onunload).
Вызывается этот код при закрытии браузера, поэтому ты не мог проследить выполнение его действий, так как не запрограмировал этот код или не прользовался отладкой!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2009, 05:48
Помогаю со студенческими работами здесь

Как перехватить входной поток браузера?
Сервер направляет браузеру данные (в виде html-кода), например, при помощи команды echo. Вопрос: как перехватить эти данные и изменить по...

Перехватить нужный файл на отрезке от сервера до браузера, модифицировать, и продолжить загрузку.
Здравствуйте, светлые головы. Есть вопрос. Условие: грузимся в хроме с сервера, загружаются порядка 30 разных файлов. Задача:...

Закрытие браузера
Как в дреамвивере сделать кнопку, чтоб закрывался браузер?какой код нужен для этого?

Закрытие браузера Яндекс
После включения компьютера, при запуске Яндекс браузера, закрывается яндекс полностью, после третьей попытки запуска начинает работать...

Закрытие вкладки браузера
Столкнулся с проблемкой. Прожка открывает браузер хром,заходит на сайт и находит ссылку на сайте и кликает по ней, открывается страница в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru