2009-05-25 22 views
9

J'ai vu des sites Web surligner les mots clés que vous avez utilisés pour accéder à la page. (comme les mots-clés que vous avez tapés dans la liste de recherche Google)Comment un site Web met-il en évidence les termes de recherche que vous avez utilisés dans le moteur de recherche?

Comment sait-il quels mots-clés vous avez tapé dans le moteur de recherche? Examine-t-il l'en-tête HTTP du référent ou quelque chose? Tous les scripts disponibles qui peuvent le faire? Il pourrait être côté serveur ou JavaScript, je ne suis pas sûr.

Répondre

12

Cela peut être fait côté serveur ou côté client. Les mots-clés de recherche sont déterminés en regardant l'en-tête HTTP Referer (sic). En JavaScript, vous pouvez regarder document.referrer. Une fois que vous avez le référent, vous vérifiez s'il s'agit d'une page de résultats de moteur de recherche que vous connaissez, puis analysez les termes de recherche.

Par exemple, les résultats de recherche de Google ont des URL qui ressemblent à ceci:

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

Le paramètre de requête q est la requête de recherche, de sorte que vous voudriez tirer cela et non URL échapper, entraînant:

programming questions 

Ensuite, vous pouvez rechercher les termes sur votre page et les mettre en surbrillance si nécessaire. Si vous travaillez côté serveur, vous devez modifier le code HTML avant de l'envoyer au client. Si vous le faites côté client, vous manipulez le DOM.

Il existe des bibliothèques qui peuvent le faire pour vous, par exemple this one.

+0

Ce que cette réponse a omis est que référant est généralement peu fiable. Tous les navigateurs et toutes les configurations n'enverront pas de referrer (pour des raisons de confidentialité/sécurité essentiellement). – SpliFF

+4

Oui, c'est vrai, mais puisque la mise en évidence des termes de recherche n'est faite que par commodité, ce n'est pas grave. Si vous n'avez pas de référent, vous n'avez rien à mettre en évidence. –

+0

Merci. Quelle excellente réponse. Surtout la bibliothèque. –

7

Réalisant cela est probablement trop tard pour faire une différence ...

S'il vous plaît, je vous prie - savoir comment accomplir cela et jamais le faire. En tant qu'utilisateur web, je trouve cela extrêmement ennuyeux (et distrayant) quand je tombe sur un site qui le fait automatiquement. La plupart du temps, cela finit par mettre en évidence tous les autres mots sur la page. Si j'ai besoin d'aide pour trouver un certain mot dans une page, mon navigateur a une fonction "find" bien plus appropriée, que je peux utiliser ou ne pas utiliser à volonté, plutôt que d'avoir à recharger toute la page pour l'obtenir loin quand je ne le veux pas (qui est le vaste la majorité du temps).

+1

Je me demande si vous représentez la grande majorité des internautes qui pourrait le trouver utile. –

+1

Je suis certainement d'accord avec @ 1amzave. Mon navigateur a une fonction de recherche géniale, et je l'utiliserai si j'en ai besoin. Les faits saillants sont * très * gênants, surtout si après un balayage rapide, je décide de lire la page en profondeur. C'est aggravé par le fait que la plupart des sites qui le font ne permettent pas de l'éteindre. * Je * sais comment le réparer, mais je suis un développeur web. La plupart des gens n'auraient aucune idée, ce qui signifie qu'ils doivent lire la page avec des dizaines de mots en surbrillance. Et s'ils décident qu'ils veulent imprimer la page, ou l'envoyer par e-mail à quelqu'un en format HTML, il est reporté, éventuellement de façon permanente. –

3

Fondamentalement, vous ...

  1. document.referrer Examinez.
  2. Avoir une liste de domaines à GET param qui contient les termes de recherche.

    var searchEnginesToGetParam = { 
        'google.com' : 'q', 
        'bing.com' : 'q' 
    } 
    
  3. Extrait du GET appropriée param et decodeURIComponent() il.

  4. Analyser les nœuds de texte dans lesquels vous voulez mettre les termes en surbrillance (voir Replacing text with JavaScript).
  5. Vous avez terminé!