2013-12-16 3 views
2

Есть ли способ перехватить проблемы с подключением на стороне клиента?Как перехватить ошибку подключения GeckoFx

Я имею в виду, что если пользователь теряет соединение и пытается получить доступ к веб-сайту, GeckoFx/Xulrunner показывает сообщение «[url] не найден. Пожалуйста, проверьте имя и повторите попытку». в окне сообщения типа предупреждения.

Можно ли изменить это сообщение или перехватить его для его обработки и, например, показать страницу с ошибкой?

Обнаруженные решение: После дополнительной проверки и с просьбой о помощи в geckofx, я увидел, что эта линия отсутствует:

GeckoWebBrowser.UseCustomPrompt();

И обе этой линии, и назначение делегата функции PromptServiceCreator должны быть установлены ПЕРЕД методом Xpcom.Initialize. Это была та часть, которая заставила меня так долго узнать, так как мой метод Initialize был в другом классе.

+1

, я обнаружил, что это помогает: 'GeckoPreferences.User [" browser.xul.error_pages. enabled "] = true;' После этого вы можете проверить «IsErrorPage» в событии Navigated. Но похоже, что я не могу заменить этот документ. Поэтому проблема сохраняется. – pca1987

ответ

0

Если вы установили «browser.xul.error_pages.enabled» disabled (false), вы можете написать свой собственный PromptService.

Сначала реализовать свой собственный оперативный сервис:

class MyPromptService : nsIPromptService2, nsIPrompt { .... } 

Тогда на ранней стадии в вашем запуске программы:

PromptFactory.PromptServiceCreator =() => new MyPromptService(); 

Это все, что вам делать то, что вы хотите со всеми предупреждениями.

Если это не сработает, то, ваш всегда может просто изменить документы содержание:

browser.DocumentCompleted += (s, e) => 
{ 
    if (!sometest) 
     return; 

    GeckoHtmlElement g = (GeckoHtmlElement)browser.Document.DocumentElement; 
    g.InnerHtml = "what ever you want."; 
}; 
+0

Спасибо за ваше время. Я пробовал это и поставил точку останова в каждом методе в MyPromptService и, похоже, не работает. Есть идеи? (Я оставил там все нереализованное исключение, и никто не был запущен). Я отключил свойство страниц ошибок, и я создал новый экземпляр класса 'PromptFactory.PromptServiceCreator =() => new MyPromptService();'. PS: чтобы воспроизвести ошибку, я пытаюсь перейти к несуществующему ip, например http://10.0.0.77. – pca1987

+0

обновленный ответ - (поскольку PromptService не вызывается для всех ошибок.) – Tom

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

  • Нет связанных вопросов^_^