2014-01-08 3 views
1

У меня проблема с загрузкой bing.com в элементе управления WebBrowser на Windows Phone 8. Кажется, что это запустит приложение WP8 Search (так же, как нажатие кнопка «Поиск» на телефоне). Проблема заключается в том, что после нажатия на результат в этом поисковом приложении она не вернет вас в исходное приложение - оно идет в IE, чтобы показать результат. Это не будет работать для меня и, похоже, является серьезным недостатком (IMO) в поведении WebBrowser.Отображение m.bing.com в элементе управления WP8 WebBrowser

Кажется, что есть несколько приложений, которые смогли показать bing.com без запуска приложения поиска телефона - например, Image Downloader Free. Был еще один, но я не помню, что это было ...

После некоторых исследований я обнаружил, что событие WebBrowser_Navigating запускается 3 раза при переходе на bing.com: первый запрос пользователю- (www.bing.com), он затем перенаправляется на http://wp.m.bing.com/?mid=10006, затем перенаправляется на bing: // home /? mid = 10006.

Предотвращения его от переадресации на поиск приложение Bing довольно просто, добавьте к этому событию Navigating:

e.Cancel = (e.Uri.Scheme == "bing"); 

Проблема заключается в том, что тогда только показывает страницу поиска обладателя места Bing, который говорит, что «Bing Поиск "и имеет ссылку, в которой говорится:« Назад к поиску Bing », который ничего не делает (обычно он перезапускает приложение Bing Search).

У меня есть несколько мыслей, но я не уверен, насколько они осуществимы.

  • В элементе управления WP8 WebBrowser можно ли подделать User Agent?
  • Можно ли удалить или добавить один из элементов в свойстве WebBrowser.Uri.Flags, чтобы повлиять на способ обработки запроса Bing.com?
  • Если ни одна из этих работ не работает, я могу просто создать фиктивную страницу на своем веб-сервере, перенаправить все запросы bing.com и перенести ее на первую страницу m.bing.com с помощью пользовательского агента с карточкой , Я действительно хотел бы избежать необходимости делать этот вариант. С точки зрения конечного пользователя они никогда не узнают, но я просто добавил совершенно новый уровень накладных расходов, обслуживания и ресурсов.

Если вы заинтересованы, прикрепленная являются дифференциалов для самых EventArgs объекта между 3 запросов, которые происходят в случае WebBrowser.Navigating:

Запрос 1 (bing.com) -> Запрос 2 (направляется в wp.m.bing.com/?mid=10006) enter image description here

Запрос 2 (направляется wp.m.bing.com/?mid=10006) -> Запрос 3 (направляется Бинг: // home /? mid = 10006) enter image description here

tl; dr Кто-нибудь знает, как предотвратить веб-сайт www.bing.com от запуска приложения поиска в элементе управления WebBrowser в моем приложении?

Спасибо!

ответ

2

Я не знаю, есть ли лучший способ справиться с этим, но я нашел решение. Я не получил его, чтобы он работал отлично, когда нажата кнопка «Назад», поэтому я буду обновлять свой ответ, если/когда я нахожу более прочное решение. Я все еще думаю, что это большой недостаток в управлении WebBrowser в WP8.

Вот код:

private bool _customHeaderRequest = false; 

private void MainBrowser_Navigating(object sender, NavigatingEventArgs e) 
{ 
    string host = e.Uri.Host.ToLowerInvariant().Trim(); 

    if ((host == "bing.com" || host.EndsWith(".bing.com")) && !_customHeaderRequest) 
    { 
     e.Cancel = true; 

     Dispatcher.BeginInvoke(() => 
      MainBrowser.Navigate(e.Uri, null, 
       "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)\r\n")); 

     _customHeaderRequest = true; 
     return; 
    } 

    _customHeaderRequest = false; 
} 

private void MainBrowser_Navigated(object sender, NavigationEventArgs e) 
{ 
    _customHeaderRequest = false; 
} 
1

У меня нет доступа к моему эмулятору, но я попробовал его на моем телефоне, а также:

  1. Перенаправление не происходит, когда вы «Предпочитаете настольную версию» и откройте m.bing. ком.Внимание: мобильная версия не очень красива.

  2. Попробуйте отключить скрипты на своем веб-браузере, что может помешать переадресации.

  3. Любой шанс, что вы можете просто использовать Google?

+0

Привет Мигель, спасибо за ответ. Что касается вашего первого элемента: true, это предотвращает открытие приложения поиска в IE, но, похоже, это не влияет на элемент управления WebBrowser. Я пробовал с включенными и отключенными сценариями (они по умолчанию отключены). Кажется, они перенаправляют на основе User Agent и HTTP 30x коды ответов. Что касается Google, я хочу, чтобы мои пользователи могли куда угодно. Приложение предназначено для сканирования HTML текущего URL-адреса, где находится пользователь. Я опубликовал решение, но это не идеально. Еще раз спасибо. –

+1

@AdamPlocher Эй, мы все должны что-то взломать. Надеюсь, MS может решить эту проблему, я могу себе представить, какая из этих хлопот должна быть. Вы можете попробовать опубликовать это на форумах поддержки (http://answers.microsoft.com/en-us/winphone/forum/wp8?tab=QnA&status=answered&sort=HelpfulCount&dir=Desc) и посмотреть, могут ли они сообщить об этом как дефект , Удачи :) – miguelarcilla