1

I'm writing a Chrome extension that searches for posts in a Google Group whose subject lines contain a given character string. From the browser, using the search query "subject:", I get the search results: either 0 results or > 0 and I take different actions depending on whether results come up. The wrinkle is that if I simply fetch the page data for the results page using, say,

try
  {
  var request = new XMLHttpRequest();
  request.open("GET", url, false);
  request.send(null);
  }
catch (e)
  {
  console.log(e);   
  return;
  }
if (request.status == 200)
  {
  var tmp = request.responseText;
  }

I just get obfuscated data and can't read it. If I can get a Document object back, then I can search for a certain classname, with something like doc.getElementsByClassName, that exists if and only there are non-zero results from the search.

4

1 回答 1

0

以下是如何将 responseText 转换为 dom....

var page = document.implementation.createHTMLDocument("");
page.documentElement.innerHTML = request.responseText;
// Now you can find things
var thing = page.documentElement.querySelector('#find');

...但这对于某些页面来说并不总是足够的,因为它们是 ajax 驱动的,而且新的 Google Groups 是肯定的。
所以这个页面只是页面加载时 js 将要获取的所有其他内容的框架。
有时,您可以通过查看 WebInspector 中的网络面板并观察按下搜索按钮时发生的情况,了解如何复制页面发出的 ajax 请求并复制它。
但是 Google Groups 2 正在做一些时髦的事情,我不知道;)
您还可以做其他事情,例如覆盖 XMLHttpRequest 并监控调用它的内容以及当就绪状态更改为 4 时它会做什么或监控 onload。并使用该信息来尝试找出处理 responseText 的函数,有时以这种方式找到您需要的内容。但我现在找不到我的代码,也不想为此做这件事,因为我知道它不会很漂亮;)
祝你好运。

于 2012-12-04T19:27:16.483 回答