文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
document 对象
Window.Open详解
JS replace 方法
JScript 属性
JScript 对象
JScript 方法
关于window.opener的用法
JavaScript语法——style.display 属..
不被拦截的弹出窗口代码
showModalDialog和showModelessDialog..
showModelessDialog()使用详解
IE中非模式对话框(showModelessDialog..
JS eval()函数
Preferences 指南
JS中的setTimeout和setInterval的区别
JavaScript对象与数组参考大全
javascript动态增加、删除、填充表格..
用Java实现几种常见的排序算法
JavaScript 日期函数
JavaScript 使用字符串函数
如何用Javascript获得TextArea中的光..
Document 对象方法
在input中只能输入数字
selection.createRange() 用法例子
获取网页各种宽高的值
JavaScript方法 - indexOf方法
substring函数详解
40种网页常用小技巧(javascript)
event.X和event.clientX有什么区别
clientX, clientY,offsetX, offsetY,..


技术教程 -> JavaScript教程 ->  
利用搜索引擎引用来高亮页面关键字
来源:转载   人气:810   录入时间:2007-11-8
      当我们在使用大多数的网页搜索引擎的"网页快照"功能时,他们都会在返回的快照页面中加入关键字高亮的功能。这将非常方便我们查找网页中被检索的内容,其中google快照的关键字高亮还融入了分词功能,不同的词着以不同的颜色。可是由于%!#^*&$!的原因,google的网页快照非常的不稳定,那么我们就自己来加上这个关键字高亮功能吧。
   
     如下图,当我们在google中搜索了关键字:apache asp.net后的结果:
   
     点击结果的连接并导航到我们自己的页面后,如果我们加以如下关键字高亮,是否会对用户快速查找和定位页面感兴趣的内容,提供方便呢?
   
    按么我们来仔细的看看,可是IE中的地址明明是:http://birdshome.cnblogs.com/archive/2005/11/17/Apache.html,那么怎么能在页面中高亮由搜索引擎检索的关键字呢?这里我们是利用了document的referrer属性来获取搜索引擎类型和关键字信息的。比如上例中,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。我们通过JavaScript分析出指定搜索引擎的关键字,再操作页面DOM对象就实现了高亮的功能。不过对于较长的连续中文关键字,这种客户端高亮方案是不可能提供分词功能的,也算是美中不足了。
   
    具体实现当前页面被检索关键字高亮的代码如下,放入页面的document.body.onload事件中调用就行了:)
   
    function FriendlyDisplayForSearch()
   {
    var url = new UrlBuilder(document.referrer);
    if ( url.m_Success )
    {
    var host = url.m_Host.toLowerCase();
    if ( host.indexOf('.google.') != -1 )
    {
    var keywords = url.GetValue('q', 'UTF8');
    if ( keywords )
    {
    var ht = new HighlightText();
    ht.Execute(keywords);
    }
    }
    else if ( host.indexOf('.baidu.') != -1 )
    {
   
    }
    }
   }// 由于编码和使用频率的关系,目前只做了google搜索引擎
   
   function HighlightText(range)
   {
    if ( range )
    {
    this.m_Range = range;
    }
    else
    {
    this.m_Range = document.body.createTextRange();
    }
    this.m_Keyword = '';
   
    this.toString = function()
    {
    return '[class HightlightText]';
    };
   }
   
   HighlightText.prototype.Execute = function(keyword)
   {
    if ( keyword )
    {
    this.m_Keyword = keyword;
    }
    if ( this.m_Range && this.m_Keyword )
    {
    var separater = ' ';
    if ( this.m_Keyword.indexOf(' ') == -1 )
    {
    separater = '+';
    }
    var keywords = this.m_Keyword.split(separater);
    var bookmark = this.m_Range.getBookmark();
    for ( var i=0 ; i < keywords.length ; ++i )
    {
    var keyword = keywords[i];
    if ( keyword && keyword.length > 1 )
    {
    while(this.m_Range.findText(keywords[i]))
    {
    this.m_Range.execCommand('ForeColor', 'false', 'highlighttext');
    this.m_Range.execCommand('BackColor', 'false', 'highlight');
    this.m_Range.collapse(false);
    }
    this.m_Range.moveToBookmark(bookmark);
    }
    }
    }
   }
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987