2009-05-25 19 views
9

我已经看到一些网站突出显示您使用的搜索引擎关键字,以达到页面。 (例如您在Google搜索列表中键入的关键字)网站如何突出显示您在搜索引擎中使用的搜索字词?

它如何知道您在搜索引擎中输入的关键字?它检查引用HTTP头或其他东西吗?任何可用的脚本都可以做到这一点?它可能是服务器端或JavaScript,我不确定。

回答

12

这可以在服务器端或客户端完成。搜索关键字是通过查看HTTP Referer(sic)头来确定的。在JavaScript中,你可以看看document.referrer

一旦你有了引用者,你就检查它是否是你知道的搜索引擎结果页,然后解析出搜索条件。

例如,谷歌的搜索结果中有一个看起来像这样的网址:

http://www.google.com/search?hl=en&q=programming+questions 

q查询参数的搜索查询,所以你想拉了这一点,并取消URL-逃避它,导致:

programming questions 

然后,您可以搜索页面上的条款并在必要时突出显示它们。如果你正在做这个服务器端 - 你在发送给客户端之前修改了HTML。如果你在做客户端,你会操纵DOM。

有一些现成的库可以为你做这件事,比如this one

+0

这个答案遗漏的是引用者通常不可靠。并非所有浏览器和配置都会发送引荐者(基本上出于隐私/安全原因)。 – SpliFF 2009-05-25 16:49:50

+4

是的,的确如此,但是由于突出显示搜索词只是为了方便,所以这不是什么大问题。如果你没有找到推荐人,你只是没有任何要强调的地方。 – 2009-05-25 17:01:18

7

意识到这可能是来不及做出任何区别...

拜托,我求求你 - 找出如何做到这一点,然后从未做到这一点。作为一个网络用户,当我遇到一个自动完成此操作的网站时,我发现它非常恼人(并且分散注意力)。大多数情况下,它最终会突出显示页面上的所有其他字词。如果我需要帮助在页面中找到某个单词,我的浏览器会有一个更合适的“查找”功能,我可以随意使用或不使用它,而不必重新加载整个页面以便使用它当我不想要它的时候(这是广阔的大部分时间)。

3

基本上,你...

  1. 检查document.referrer
  2. 有一个GET域参数列表,其中包含搜索条件。

    var searchEnginesToGetParam = { 
        'google.com' : 'q', 
        'bing.com' : 'q' 
    } 
    
  3. 提取相应的GET PARAM和decodeURIComponent()它。

  4. 解析您想突出显示术语的文本节点(请参阅Replacing text with JavaScript)。
  5. 你完成了!
相关问题