2013-02-17 90 views
0

我正在使用jQuery和ajax來獲取遠程網頁。如果你把這個網頁加載到你的瀏覽器中,它會正常加載,但是在〜100ms之後,另一個元素被顯示出來代表一個計數器。這個計數器被插入到一個特定的地方,並有一個特定的類。這是這個地方的HTML:不僅等待頁面加載,但通過ajax調用它的內容更新

<span class="unreadcount">1</span> 

我想爲Chrome製作一個插件,它需要這個值。問題是這個值在加載頁面後不可用,但是在處理頁面的HTML以獲得我想要的值之前,我必須等待頁面到服務器的請求(對於未讀取的數字)完成。

有沒有什麼辦法可以用jQuery做到這一點?我使用下面的代碼來獲取HTML頁面:

$.ajax({ 
      async: false, 
      cache: false, 
      type: 'GET', 
      dataType: 'html', 
      url: 'https://somesite.com/index.php', 
      success: function(data1) { 
       var descNode = document.createElement("div"); 
       descNode.innerHTML = data1; 
       var unreadcount = descNode.getElementsByClassName("unreadcount"); 
      /*process unreadcount etc*/ 
     }, 
     error: function() { 
      // something went wrong with the request 
      error_occurred(); 
      return; 
     } 
     }); 

不幸的是,每一次,unreadcount.length爲0,我注意到,櫃檯不隨頁面一起加載,但不久後。

如何在處理頁面之前等待計數器加載?

回答

1

你不行。

您正在將網頁作爲字符串獲取。因此,不會執行JavaScript。

最好的辦法是嘗試複製提取未讀郵件數的請求。也就是說,如果你確定這是通過AJAX完成的。

儘管可能使用可能會有所幫助。而且,對您有利,您只需要一種僅適用於Chrome的解決方案,而不是易於出錯的跨瀏覽器解決方案。

+0

iframe在放置在它們內部的HTML處執行javascript?我可以創建一個iframe對象,加載HTML頁面並在javascript完成運行後重新讀取它的HTML?會有這樣的工作嗎? – hakermania 2013-02-17 16:17:00

+0

@ user9379,*可能*。也就是說,如果您可以在Chrome擴展中以某種方式避免CORS – Alexander 2013-02-17 16:29:47