11

我看到一些网站突出显示您使用的搜索引擎关键字,以访问该页面。(例如您在 Google 搜索列表中输入的关键字)

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

4

3 回答 3

15

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

一旦你有了推荐人,你检查它是否是你知道的搜索引擎结果页面,然后解析出搜索词。

例如,Google 的搜索结果中的 URL 如下所示:

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

查询参数是搜索查询,因此q您需要将其拉出并取消 URL 转义,结果是:

programming questions

然后,您可以搜索页面上的术语并根据需要突出显示它们。如果您在此服务器端进行操作,您将在将 HTML 发送到客户端之前对其进行修改。如果您在客户端进行操作,您将操作 DOM。

现有的库可以为您执行此操作,例如这个.

于 2009-05-25T16:44:03.373 回答
8

意识到这可能为时已晚,无法产生任何影响......

拜托,我求求你——找出如何做到这一点,然后永远不要这样做。作为一名网络用户,当我遇到一个自动执行此操作的网站时,我发现它非常烦人(并且分散注意力)。大多数情况下,它只会突出显示页面上的所有其他单词。如果我需要帮助在页面中查找某个单词,我的浏览器内置了一个更合适的“查找”功能,我可以随意使用或不使用它,而不必重新加载整个页面才能让它运行当我不想要它时(这是绝大多数时间)。

于 2009-07-08T08:10:49.070 回答
4

基本上,你...

  1. 检查document.referrer
  2. 有一个包含搜索词的 GET 参数的域列表。

    var searchEnginesToGetParam = {
        'google.com' : 'q',
        'bing.com' : 'q'
    }
    
  3. 提取适当的 GET 参数和decodeURIComponent()它。

  4. 解析要突出显示术语的文本节点(请参阅用 JavaScript 替换文本)。
  5. 你完成了!
于 2009-10-30T00:06:23.803 回答