我正在开发一个浏览器扩展程序,需要在提供新的Google即时页面时拨打电话,然后修改结果(想想SEOQuake)。
问题:如果用户将链接直接粘贴到url字段并按Enter键,则会发生新的页面加载,并且我的扩展程序将运行。但是使用谷歌即时,虽然在您键入查询时网址会发生变化,但您在技术上仍然在同一页面上,因此扩展程序无法运行。
我查看了SEOQuake的代码,这似乎就是他们如何解决问题:
document.body.addEventListener("DOMNodeInserted", sq_bindAsEventListener(this, function(event) { //
这是一个很好的解决方案,但它对我来说并不理想,因为据我所知,在版本9以下的IE不支持DomNodeInserted。(惊喜!)
我将jQuery与应用程序捆绑在一起,因此我可以访问所有jQuery函数。我正在考虑使用.keypress()而只是等到一秒钟没有输入 - 如果它是谷歌即时,我会知道页面已经改变。
我的另一个想法是监控URL是否已被更改;我似乎找不到任何jquery或javascript函数来跟踪url是否被更改。
了解谷歌即时搜索的最佳方式是什么?
答案 0 :(得分:0)
原始解决方案:使用setInterval()并检查window.top的位置是否发生更改(这意味着已执行新查询)。
答案 1 :(得分:0)
倾听hashchange可能是最佳选择。
较旧的IE(< 8 ??)不会给你这个事件,所以你可能仍然需要那个计时器。当然,在IE7上可以获得所有这些麻烦,当然,我怀疑是这种情况。