【发布时间】:2012-04-10 10:36:53
【问题描述】:
我一直在试图弄清楚如何让 Greasemonkey 用户脚本在后台打开搜索引擎页面并获取搜索结果。我试图查找示例以打开 HTML 页面,但是 afaik 所有请求示例都处理 ajax 调用而不是 html 调用。
任何提示将不胜感激。
【问题讨论】:
我一直在试图弄清楚如何让 Greasemonkey 用户脚本在后台打开搜索引擎页面并获取搜索结果。我试图查找示例以打开 HTML 页面,但是 afaik 所有请求示例都处理 ajax 调用而不是 html 调用。
任何提示将不胜感激。
【问题讨论】:
我做过类似的事情。
您所要做的就是将GM_xmlhttpRequest 响应保存在DIV 中。
有了这个DIV,你可以做任何你想做的事(显示、隐藏、只显示部分内容等)
只需看看my script 源代码。
我很肯定它会对你有所帮助。
我知道你不需要,14k 代表先生,但无论如何我都会为你分解它:)
函数conectar() 调用GM_xmlhttpRequest [GET] 并仅存储我想在#divtempora 中使用的部分内容,这是一个用户永远看不到(隐藏)的虚拟 div。
然后函数resp_dxlegacy()遍历虚拟div,将我想要的信息保存在一个变量中并再次调用conectar(),传递此参数并将内容存储在另一个div中,最终显示给用户。
【讨论】:
在 GreaseMonkey 中没有这样做(实际上不知道你是否可以这样做); 不过如果你真的想通过打开一个新标签来做到这一点,并且如果你没有在你的代码中使用任何 GM 特定的东西(并且不想自动运行代码,那么,这可能是一个障碍),您可以查看自定义按钮扩展。
有了它,您可以创建可以访问 Firefox 内部的按钮并调用诸如 gBrowser.addTab() 之类的东西。
但是与 CB 合作比在 GM 中工作要复杂一些。
如果您有兴趣,这些帖子可能会有所帮助:
从 Mozilla 复制的代码示例:
var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
newTabBrowser.addEventListener("load", function () {
newTabBrowser.contentDocument.body.innerHTML = "<div>hello world</div>";
}, true);
【讨论】:
标准的 Greasmonkey GM_xmlhttpRequest 函数 (link to API) 可以处理任何类型的请求,而不仅仅是 JSON。在示例下,查看GET request 代码 sn-p。
不过要小心。像 Google 这样的搜索引擎不会欣赏屏幕报废(如果您过快获取太多结果,可能会阻止您)。
【讨论】: