【问题标题】:How does a website highlight search terms you used in the search engine?网站如何突出显示您在搜索引擎中使用的搜索词?
【发布时间】:2019-08-28 00:28:03
【问题描述】:

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

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

【问题讨论】:

    标签: search-engine highlight keyword


    【解决方案1】:

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

    一旦有了引荐来源网址,您就可以检查它是否是您知道的搜索引擎结果页面,然后解析出搜索词。

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

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

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

    programming questions
    

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

    现有的库可以为您执行此操作,例如 this one

    【讨论】:

    • 这个答案遗漏的是推荐人通常不可靠。并非所有浏览器和配置都会发送推荐人(基本上出于隐私/安全原因)。
    • 是的,没错,但由于搜索词的突出显示只是为了方便,所以没什么大不了的。如果你没有推荐人,你就没有什么可强调的。
    • 请注意 Google 新的 ajaxy 样式引荐字符串。据我了解,跟踪引用 URL 将不再起作用,因为浏览器不会传递任何超出哈希值的内容。 getclicky.com/blog/150/…
    【解决方案2】:

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

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

    【讨论】:

    • 我想知道您是否代表了绝大多数可能会觉得它有帮助的网络用户。
    • 我当然同意@1amzave。我的浏览器有一个很棒的搜索功能,如果需要我会使用它。亮点非常分散注意力,尤其是在快速扫描后我决定深入阅读页面时。更糟糕的是,大多数这样做的网站都没有提供关闭它的方法。 知道如何解决它,但我是一名网络开发人员。大多数人不会有任何线索,这意味着他们必须阅读带有数十个突出显示的单词的页面。如果他们决定要打印该页面,或以 HTML 格式通过电子邮件将其发送给某人,它可能会被永久保留。
    【解决方案3】:

    基本上,你...

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

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

    4. 解析要突出显示术语的文本节点(请参阅Replacing text with JavaScript)。
    5. 大功告成!

    【讨论】:

      猜你喜欢
      • 2014-02-13
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      相关资源
      最近更新 更多