2009-05-25 86 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. 你完成了!