2013-02-17 52 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