我正在编写一个Chrome扩展,用于搜索主题行包含给定字符串的Google群组中的帖子。从浏览器中,使用搜索查询"subject:",我会得到搜索结果:0个结果或>0,我会根据是否出现结果采取不同的操作。问题是,如果我简单地使用获取结果页面的页面数据
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;
}
我只是得到了模糊的数据,无法读取它。如果我能取回一个Document对象,那么我就可以搜索某个类名,比如doc.getElementsByClassName,它存在于搜索结果为非零的情况下。
以下是如何将responseText转换为dom。。。。
var page = document.implementation.createHTMLDocument("");
page.documentElement.innerHTML = request.responseText;
// Now you can find things
var thing = page.documentElement.querySelector('#find');
但对于某些页面来说,这并不总是足够的,因为它们是ajax驱动的,而且新的谷歌群组是肯定的
因此,这个页面只是js在加载页面时将获得的所有其他内容的框架
有时,您可以通过查看WebInspector中的"网络"面板并观察按下搜索按钮时会发生什么,来了解如何复制页面发出的ajax请求并复制它
但谷歌群组2正在做一些时髦的事情,我对此一无所知;)
您还可以做其他事情,比如覆盖XMLHttpRequest,并监视调用它的内容,以及当就绪状态更改为4时它会做什么,或者监视onload。利用这些信息来尝试弄清楚是什么函数处理responseText,有时还可以找到你需要的东西。但我现在找不到我的代码,也不想为此做,因为我知道它不会很好看;)
祝你好运。