Windows Phone 8 の WebBrowser コントロールに bing.com を読み込むのに問題があります。これを行うと、WP8 検索アプリが起動するようです (電話の [検索] ボタンを押すのと同じです)。問題は、その検索アプリで結果をクリックすると、元のアプリに戻らず、結果を表示するために IE に移動することです。これは私にはうまくいかず、WebBrowser の動作に重大な欠陥 (IMO) があるようです。
携帯電話の検索アプリを起動せずに bing.com を表示できるようになったアプリがいくつかあるようです。たとえば、Image Downloader Free です。他にもあったけど何だったか思い出せない…
調査の結果、bing.com にアクセスするときに WebBrowser_Navigating イベントが 3 回発生することがわかりました。ユーザーが入力した URL (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 検索アプリを再起動します)。
いくつかの考えがありますが、どれだけ実現可能かはわかりません。
- WP8 WebBrowser コントロールで、ユーザー エージェントを偽造することは可能ですか?
- Bing.com が要求を処理する方法に影響を与えるために、WebBrowser.Uri.Flags プロパティの項目の 1 つを削除または追加できますか?
- これらのいずれも機能しない場合は、Web サーバーにダミー ページを作成し、すべての bing.com 要求をそのページにリダイレクトして、カード コード化されたユーザー エージェントで m.bing.com のフロント ページを取得するだけです。ただし、このオプションを実行する必要は避けたいと思います。エンドユーザーの観点からは、彼らは決して知りませんが、オーバーヘッド、メンテナンス、およびリソースに関するまったく新しいレイヤーを追加しただけです.
興味がある場合は、WebBrowser.Navigating イベントで発生する 3 つの要求間の EventArgs オブジェクトの差分を添付します。
リクエスト 1 (bing.com) -> リクエスト 2 (wp.m.bing.com/?mid=10006 に転送)
リクエスト 2 (wp.m.bing.com/?mid=10006 に転送) -> リクエスト 3 (bing://home/?mid=10006 に転送)
tl;dr アプリケーションの WebBrowser コントロールで www.bing.com が検索アプリを起動するのを防ぐ方法を知っている人はいますか?
ありがとうございました!