免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3283 | 回复: 2
打印 上一主题 下一主题

JavaScript 利用搜索引擎引用高亮页面关键字 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-23 14:35 |只看该作者 |倒序浏览
  当在使用大多数的网页搜索引擎的“网页快照”功能时,都会在返回的快照页面中加入关键字高亮的功能。这将非常方便查找网页中被检索的内容,其中 google 快照的关键字高亮还融入了分词功能,不同的词以不同的颜色显示。可是由于其他的原因,google 的网页快照非常的不稳定,那么就需要自己加上这个关键字的高亮功能。

  本节代码主要使用了 onLoad 事件、document.referrer 属性以及字符串对象 indexOf 方法和 split 方法,主要功能和用法如下。

  • 当页面完全载入时,onLoad 事件会被触发,该事件可以调用相应的函数,作为其事件处理函数。在函数中,可以是任意合法的JavaScript代码。

  • document.referrer 返回用户用于冲浪至当前文档的地址。如果当前文档是首页或是通过键入 URI 到达的页面,那么这个属性返回空字符串。

  • indexOf 方法返回 String 对象内第一次出现子字符串的字符位置。indexOf 方法返回一个整数值,指出String对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。如果 startIndex 是负数,则 startIndex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。从左向右执行查找。否则,该方法与 lastIndexOf 相同。

  • split 方法将一个字符串分割为子字符串,然后将结果作为字符串数组返回,该方法的结果是一个字符串数组,在 stringObj 中每个出现 separator 的位置都要进行分解。separator 不作为任何数组元素的部分返回。
  1. <html>  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  4. <title>利用搜索引擎引用高亮页面关键字</title>  
  5. <script language="javascript"><!--   
  6. function FriendlyDisplayForSearch()   
  7. {   
  8.   var url = document.referrer;  //根据来路地址创建一个新的UrlBuilder对象   
  9.   
  10.   var host = url.toLowerCase();  //得到主机名   
  11.   //if(host.indexOf('.google.') != -1) //如果是google搜索引擎过来的   
  12.   if(true)   
  13.   {   
  14.     var keywords = 'JavaScript';  //得到搜索关键字   
  15.     if(keywords)        //如果存在关键字   
  16.     {   
  17.       var ht = new HighlightText();  //创建高亮文本对象   
  18.       ht.Execute(keywords);  //执行高亮文本   
  19.     }   
  20.   }   
  21.   else if(host.indexOf('.baidu.') != -1)   
  22.   {   
  23.   }   
  24. }   
  25. function HighlightText(range) //函数:高亮文本   
  26. {   
  27.   if(range)    //如果存在range   
  28.   {   
  29.     this.m_Range = range;  //范围赋值   
  30.   }   
  31.   else   //否则   
  32.   {   
  33.     this.m_Range = document.body.createTextRange();   
  34.   }   
  35.   this.m_Keyword = '';   
  36.   this.toString = function()   
  37.   {   
  38.     return '[class HighlightText]';   
  39.   };   
  40. }   
  41. HighlightText.prototype.Execute = function(keyword)  //高亮执行的原型函数   
  42. {   
  43.   if(keyword)  //如果存在关键字   
  44.   {   
  45.     this.m_Keyword = keyword;  //关键字赋值   
  46.   }   
  47.   if(this.m_Range && this.m_Keyword)  //如果存在域和关键字   
  48.   {   
  49.     var separater = '';   
  50.     if(this.m_Keyword.indexOf(' ') == -1)  //如果关键字存在空格符   
  51.     {   
  52.       separater = '+';   //分隔符赋值   
  53.     }   
  54.     var keywords = this.m_Keyword.split(separater);  //根据分隔符分离关键字   
  55.     var bookmark = this.m_Range.getBookmark();   
  56.     for(var i=0; i<keywords.length; ++i)    //循环遍历关键字   
  57.     {   
  58.       var keyword = keywords[i];   
  59.       if(keyword && keyword.length > 1)   
  60.       {   
  61.         while(this.m_Range.findText(keywords[i]))  //文本中存在关键字   
  62.         {   
  63.     //高亮关键字   
  64.           this.m_Range.execCommand('ForeColor', 'false', '#FFFFFF');  //参数中的 ForeColor 用来设置或获取当前选区的前景(文本)颜色   
  65.           this.m_Range.execCommand('BackColor', 'false', '#FF0000'); //BackColor 用来设置或获取当前选区的背景颜色   
  66.           this.m_Range.collapse(false);   
  67.         }   
  68.         this.m_Range.moveToBookmark(bookmark);  //赋值文本   
  69.       }   
  70.     }   
  71.   }   
  72. }   
  73. // --></script>  
  74. </head>  
  75.   
  76. <body onLoad="FriendlyDisplayForSearch()">  
  77. <center>  
  78. <h1>利用搜索引擎引用高亮页面关键字</h1>  
  79. <hr>  
  80. <br>  
  81. <p>JavaScript 使网页增加互动性。JavaScript 使有规律地重复的HTML文段简化,减少下载时间。   
  82. JavaScript能及时响应用户的操作,对提交表单做即时的检查,无需浪费时间交由 CGI 验证。JavaScript   
  83. 的特点是无穷无尽的,只要你有创意。</P>  
  84. </center>  
  85. </body>  
  86. </html>  
复制代码
  运行该程序后,页面出现一段文本文字,如下图所示。如果是通过搜索引擎找到进入这个页面的话,就会根据搜索引擎上的关键字来高亮显示搜索的文本,如下图所示。





转载地址:http://www.xuekaifa.com/article/20101024/000246.html

论坛徽章:
0
2 [报告]
发表于 2010-12-23 15:39 |只看该作者
学习新知识

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
3 [报告]
发表于 2010-12-23 18:45 |只看该作者
很有意思。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP