我在IE中寫BHO(瀏覽器幫助對象),我需要跟蹤重定向。NavigateComplete2事件和重定向
最初我以爲BeforeNavigate2事件是我需要的,但我知道它實際上主要是用於框架。接下來,我發現WebBrowserEvents2的NavigateComplete2事件似乎在重定向時被激發兩次。但我不知道我的觀察結果是否正確,而且我也不知道如何判斷NavigateComplete2事件序列是由於重定向還是用戶點擊造成的。請指教!
我在IE中寫BHO(瀏覽器幫助對象),我需要跟蹤重定向。NavigateComplete2事件和重定向
最初我以爲BeforeNavigate2事件是我需要的,但我知道它實際上主要是用於框架。接下來,我發現WebBrowserEvents2的NavigateComplete2事件似乎在重定向時被激發兩次。但我不知道我的觀察結果是否正確,而且我也不知道如何判斷NavigateComplete2事件序列是由於重定向還是用戶點擊造成的。請指教!
我在大量的試驗和錯誤中發現,如果您比較從BeforeNavigate2傳遞的瀏覽器接口指針與創建BHO時得到的瀏覽器接口指針,您可以計算出真正的開始url。當它們相同時,傳遞給BeforeNavigate2的url就是你需要的。您需要將其與NavigateComplete2中的相比較。如果它們不同,那麼它就是重定向的標誌。一個問題是當一個新窗口打開時。在這種情況下,您還需要關注NewWindow事件,並進行一些特殊處理(當打開一個新窗口時,BeforeNavigate2 URL也將傳遞給NavigateComplete2,因此您需要設置一個標誌並進行相應處理)。
在與您的瀏覽器對象中的單獨框架觸發NavigateComplete2的情況類似,我發現DocumentComplete做了竅門,等待所有幀在觸發前加載。也許這可能有助於你的情況?
基於我的搜索,它看起來並不存在一種方法:http://social.msdn.microsoft.com/Forums/en/ieextensiondevelopment/thread/f772ad71-0c7c-45df-8ef6-3ec9cf2deb38 – kee