我正在编写一个 Chrome 扩展程序,用于搜索主题行包含给定字符串的 Google 网上论坛中的帖子。从浏览器中,使用搜索查询“主题:”,我得到搜索结果: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 驱动的,而新的 Google 网上论坛是肯定的。
所以这个页面只是页面加载时 js 将获得的所有其他内容的框架。
有时,您可以弄清楚如何复制页面发出的 ajax 请求,并通过查看 WebInspector 中的网络面板来复制它,并观察按下搜索按钮时会发生什么。
但 Google Groups 2 正在做一些奇怪的事情,我对此一无所知;)
您还可以执行其他操作,例如覆盖 XMLHttpRequest 并监视调用它的内容以及当就绪状态更改为 4 时它执行的操作或监视加载。并使用该信息尝试找出处理响应文本的函数,有时可以通过这种方式找到您需要的内容。但我目前找不到我的代码,并且不太愿意这样做,因为我知道它不会很漂亮;)
祝你好运。
关于javascript - 无法在 Chrome 扩展程序中使用 Javascript 确定 Google 网上论坛搜索的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13665288/