1

我正在开发一个浏览器扩展,它需要在提供新的谷歌即时页面时进行调用,然后修改结果(想想SEOQuake)。

问题:如果用户将链接直接粘贴到 url 字段并按下回车键,则会发生新页面加载并且我的扩展程序将运行。然而,使用 google Instant,虽然 url 在您键入查询时会发生变化,但从技术上讲,您仍然在同一页面上,因此扩展程序无法运行。

我查看了 SEOQuake 的代码,这似乎是他们解决问题的方式:

document.body.addEventListener("DOMNodeInserted", sq_bindAsEventListener(this, function(event) { //

这是一个很好的解决方案,但它对我来说并不理想,因为据我所知,低于版本 9 的 IE 不支持 DomNodeInserted。(惊喜!)

我将 jQuery 与应用程序捆绑在一起,因此我可以访问所有 jQuery 函数。我正在考虑使用.keypress()并只是等到没有输入一秒钟 - 如果它是谷歌即时,我会知道页面已经改变的事实。

我的另一个想法是监视 URL 是否已更改;我似乎找不到任何 jquery 或 javascript 函数来跟踪 url 是否已更改。

知道已执行 google 即时搜索的最佳方法是什么?

4

2 回答 2

0

听 hashchange 可能是要走的路。

较旧的 IE ( <8 ??) 不会给你这个事件,所以你可能仍然需要那里的计时器。当然,如果 IE7 可以使用即时可用的所有这些麻烦,无论如何我怀疑是这种情况。

于 2013-05-22T17:05:12.827 回答
0

一个粗略的解决方案:使用 setInterval() 并检查 window.top 的位置是否更改(这意味着已执行新查询)。

于 2012-08-15T15:20:43.333 回答