我在收到bing.com加載Windows Phone 8上的WebBrowser控件時出現問題。似乎這樣做會啓動WP8搜索應用程序(與按下手機上的搜索按鈕)。問題是,一旦你點擊搜索應用程序中的一個結果,它就不會將你帶回到原來的應用程序 - 它會進入IE來顯示結果。這對我不起作用,並且在WebBrowser行爲中似乎是一個巨大的缺陷(IMO)。在WP8 WebBrowser控件中顯示m.bing.com
似乎有幾個應用程序能夠在不啓動手機搜索應用程序的情況下顯示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搜索應用程序阻止它相當簡單,只需將其添加到導航事件:
e.Cancel = (e.Uri.Scheme == "bing");
的問題是,這則只能說明Bing搜索頁面佔位它說「兵搜索「,並有一個鏈接,說」回到必應搜索「,它什麼都不做(它通常會重新啓動必應搜索應用程序)。
我有一些想法,但我不知道他們有多可行。
- 在WP8 WebBrowser控件中,是否有可能僞造用戶代理?
- 可以刪除或添加WebBrowser.Uri.Flags屬性中的某個項目,以影響Bing.com處理請求的方式嗎?
- 如果沒有這些工作,我可以簡單地在我的Web服務器上創建一個虛擬頁面,將所有bing.com請求重定向到它,並使用卡編碼的用戶代理程序獲取m.bing.com首頁。我真的想盡量避免這樣做。從最終用戶的角度來看,他們永遠不會知道,但我只是增加了一個全新的開銷,維護和資源明智層。
如果你有興趣,連接是差異對EventArgs的發生在WebBrowser.Navigating事件中的3個請求之間的對象:
請求1(bing.com) - >請求2(轉發到wp.m.bing.com/?mid=10006)
請求2(轉發到wp.m.bing.com/?mid=10006) - >請求3(轉發至冰: // home /?mid = 10006)
tl; dr有誰知道阻止www.bing.com導致搜索應用程序在我的應用程序的WebBrowser控件中啓動的方法嗎?
謝謝!
嗨米格爾,感謝您的答覆。關於你的第一項:它確實阻止搜索應用程序在IE中打開,但它似乎不影響WebBrowser控件。我試過啓用和禁用腳本(它們在默認情況下被禁用)。他們似乎重定向了基於用戶代理和HTTP 30x響應代碼。關於谷歌,我希望我的用戶能夠去任何地方。該應用程序旨在掃描用戶所在的當前URL的HTML。我已經發布了一個解決方案,但並不完美。再次感謝。 –
@AdamPlocher嘿,我們都必須在某些事情上進行破解。希望MS能夠解決這個問題,我可以想象有多少麻煩是必須的。您可以嘗試在支持論壇(http://answers.microsoft.com/en-us/winphone/forum/wp8?tab=QnA&status=answered&sort=HelpfulCount&dir=Desc)中發佈此內容,並查看他們是否可以將其報告爲缺陷。祝你好運:) – miguelarcilla