2012-07-22 518 views
1

我正在開發一個瀏覽器擴展,當一個新的google即時頁面被提供時需要撥打電話,然後修改結果(想想SEOQuake)。如何檢測到新的Google即時頁面已被顯示?

問題:如果用戶將鏈接直接粘貼到url字段並按下回車鍵,將會發生新的頁面加載並且我的擴展將會運行。然而,即時谷歌,雖然網址改變,當你鍵入查詢,你技術上仍然在同一頁面上,所以擴展無法運行。

我看着SEOQuake的代碼,這似乎是他們是如何解決這個問題:

document.body.addEventListener("DOMNodeInserted", sq_bindAsEventListener(this, function(event) { // 

這是一個很好的解決方案,但這不是非常適合我,因爲據我所知,DomNodeInserted不支持IE 9以下版本(驚喜!)

我捆綁jQuery與應用程序,所以我有權訪問所有的jQuery功能。我正在考慮使用.keypress(),只是等到第二秒沒有輸入 - 如果它是谷歌即時,我會知道頁面已經改變。

我的另一個想法是監視URL是否被更改;我似乎無法找到任何jQuery或JavaScript函數,如果url已被更改跟蹤。

什麼是最好的方式知道谷歌即時搜索已執行?

回答

0

一個粗略的解決方案:使用setInterval()並檢查window.top的位置是否改變(這意味着已經執行了新的查詢)。

0

聆聽hashchange可能是最好的選擇。

舊的IE(< 8 ??)不會給你這個事件,所以你可能仍然需要定時器。無論如何,所有這些麻煩在IE7上都是可用的,當然,我懷疑是這種情況。

相關問題