Quando usamos a função “web snapshot” da maioria dos mecanismos de pesquisa na web, eles adicionam destaque de palavras-chave à página de snapshot retornada. Isso será muito conveniente para encontrarmos o conteúdo recuperado na página da web. O destaque de palavras-chave dos instantâneos do Google também incorpora a função de segmentação de palavras, e palavras diferentes são coloridas em cores diferentes. No entanto, devido a %!#^*&$!, o instantâneo da página da web do Google é muito instável, então vamos adicionar esta função de destaque de palavra-chave nós mesmos.
Conforme mostrado abaixo, quando pesquisamos a palavra-chave: apache asp.net no Google, os resultados foram:
Após clicar no link do resultado e navegar até nossa própria página, se destacarmos as seguintes palavras-chave, será mais fácil para o usuário encontrar e localizar rapidamente o conteúdo de interesse na página?
Vamos dar uma olhada mais de perto, mas o endereço no IE é claramente: http://birdshome.cnblogs.com/archive/2005/11/17/Apache.html , então como ele pode ser destacado na página e recuperado pela pesquisa mecanismo? E as palavras-chave? Aqui usamos o atributo referenciador do documento para obter informações sobre o tipo de mecanismo de pesquisa e palavras-chave. Por exemplo, no exemplo acima, o atributo document.referrer é: http://www.google.com/search?hl=zh-CN&newwindow=1&q=apache+asp.net&btnG=%E6%90%9C%E7% B4%A2&lr=lang_zh-CN%7Clang_zh-TW . Analisamos as palavras-chave do mecanismo de pesquisa especificado por meio de JavaScript e, em seguida, operamos o objeto DOM da página para realizar a função de destaque. No entanto, para palavras-chave chinesas longas e consecutivas, esta solução de destaque do lado do cliente não pode fornecer a função de segmentação de palavras, o que é uma mosca na sopa.
O código para implementar especificamente o destaque da palavra-chave de pesquisa na página atual é o seguinte. Basta colocá-lo no evento document.body.onload da página e chamá-lo :) function FriendlyDisplayForSearch().
{
var url = new UrlBuilder(document.referrer);
se (url.m_Sucesso)
{
var host=url.m_Host.toLowerCase();
se (host.indexOf('.google.') != -1 )
{
var palavras-chave = url.GetValue('q', 'UTF8');
se(palavras-chave)
{
var ht = new HighlightText();
ht.Execute(palavras-chave);
}
}
senão if (host.indexOf('.baidu.') != -1 )
{
}
}
}// Devido à relação entre codificação e frequência de uso, atualmente apenas a
função do mecanismo de busca google HighlightText(range)
é realizada
{
se (intervalo)
{
this.m_Range = intervalo;
}
outro
{
this.m_Range = document.body.createTextRange();
}
this.m_Keyword = '';
this.toString = função()
{
return '[class HightlightText]';
};
}
HighlightText.prototype.Execute = função (palavra-chave)
{
se(palavra-chave)
{
this.m_Keyword = palavra-chave;
}
se (this.m_Range && this.m_Keyword)
{
var separador = ' ';
se (this.m_Keyword.indexOf(' ') == -1 )
{
separador = '+';
}
var palavras-chave = this.m_Keyword.split(separador);
var marcador = this.m_Range.getBookmark();
for ( var i=0 ; i < palavras-chave.length ; ++i )
{
var palavra-chave = palavras-chave[i];
if (palavra-chave && palavra-chave.comprimento > 1)
{
while(this.m_Range.findText(palavras-chave[i]))
{
this.m_Range.execCommand('ForeColor', 'false', 'highlighttext');
this.m_Range.execCommand('BackColor', 'false', 'destaque');
this.m_Range.collapse(falso);
}
this.m_Range.moveToBookmark(marcador);
}
}
}
}