鸟食轩
Microsoft .NET[C#] MVP 2003
随笔 - 332, 文章 - 870, 评论 - 5722, 引用 - 356
利用搜索引擎引用来高亮页面关键字
当我们在使用大多数的网页搜索引擎的"网页快照"功能时,他们都会在返回的快照页面中加入关键字高亮的功能。这将非常方便我们查找网页中被检索的内容,其中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);
}
}
}
}
其它参考:
UrlBuilder
相关文章:
·
注入Script增加了一个GoogleTrack功能
·
用脚本为本blog增加了几项自定义功能
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2006-02-23 00:32
birdshome
阅读(4644)
评论(18)
编辑
收藏
评论
841246
#1楼
回复
引用
好文章!不过网页无法保存成mht
T_T
2006-02-23 08:29
|
7033[未注册用户]
#2楼
回复
引用
正是前段时间我所搞的东东。
2006-02-23 08:32
|
HD
#3楼
回复
引用
查看
birdshome兄还是保持一贯以来的胡思乱想并努力钻研精神啊,呵呵
2006-02-23 09:35
|
THIN
#4楼
回复
引用
请教一下HighlightText.prototype.Execute = function(keyword)
这句语法是怎么解释?
谢
2006-02-23 09:46
|
guest[未注册用户]
#5楼
[
楼主
]
回复
引用
查看
@guest
http://www.javascriptkit.com/javatutors/proto.shtml
2006-02-23 10:20
|
birdshome
#6楼
回复
引用
function(keyword) 应该是个匿名方法,里面的参数如何传递进去,从而对属性赋值?我是脚本白痴。
2006-02-23 10:43
|
guest[未注册用户]
#7楼
回复
引用
查看
晕HighlightText.prototype.Execute = function(keyword)是利用prototype为HightlightText定义方法Execute,它传入一个参数keyword
2006-02-23 10:54
|
THIN
#8楼
回复
引用
查看
牛
2006-02-23 22:41
|
川仔
#9楼
回复
引用
查看
Cool!
不过我是来抱怨为什么我的Google快照从来不能用的,呵呵……
2006-02-25 18:38
|
蜡人张
#10楼
[
楼主
]
回复
引用
查看
@蜡人张
不是我干的。。。
2006-02-25 21:20
|
birdshome
#11楼
回复
引用
Cool!
2006-02-25 23:36
|
Cool! [未注册用户]
#12楼
回复
引用
晕..
2006-02-26 00:13
|
Cool! [未注册用户]
#13楼
回复
引用
Cool! !
2006-02-26 16:52
|
Yng[未注册用户]
#14楼
回复
引用
如果用regex呢
2006-04-05 23:07
|
bundgrid[未注册用户]
#15楼
回复
引用
能否在搜到的pdf中实现高亮显示吗?
2006-12-29 22:25
|
66[匿名][未注册用户]
#16楼
回复
引用
查看
very good
2007-08-03 11:04
|
古代
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
苹果征集iPad 3发布会演示应用 重点是图形应用
·
京东商城涉足汽车销售 将上线售车频道
·
亚马逊新广告挑衅苹果:一个iPad可买三台kindle
·
动视暴雪确认今年第二季度推出《暗黑破坏神3》
·
官方承认 Google Bar 逆行倒施
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
导航
博客园
首页
新随笔
联系
订阅
管理
公告
Invert
原创
技术文章和心得,
转载
必须注明来源
"博客园"
!
贴子以"现状"提供,且没有任何担保,同时也没有授予任何权利。
昵称:
birdshome
园龄:
7年10个月
荣誉:
推荐博客
粉丝:
73
关注:
3
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
Nokia 6300
(2)
fan
(1)
qq
(1)
腾讯
(1)
输入法
(1)
隐私
(1)
随笔分类
(337)
.NET的私有工具类(2)
(rss)
.NET技术开发相关(34)
(rss)
Asp.net控件开发(14)
(rss)
Debug中的滑铁卢(9)
(rss)
Enjoy Computer :)(27)
(rss)
Jscript&Dhtml开发(162)
(rss)
技术区里的非技术(49)
(rss)
开发中遇到的虫子(14)
(rss)
其它编程相关内容(16)
(rss)
商务智能(BI)开发(10)
(rss)
文章分类
(147)
北京的幸福生活(29)
(rss)
不得不转载(19)
(rss)
乖乖的文章(6)
(rss)
那时还没有blog(4)
(rss)
那是相当八卦(10)
(rss)
手机短信息(1)
(rss)
我们的文章(40)
(rss)
珍贵照片的背景(4)
(rss)
重庆的幸福生活(34)
(rss)
相册
2005 Kick Off @ 涞滩
2006 Kick Off @ 钓鱼城
2006 Offsite @ 四面山
2006 Wedding @ 昆明
2007 Marriage @ 哈尔滨
2007 Offsite @ Thailand
2007 Offsite @ 海南云天
2007 Training @ Seattle
2007 Travelling @ 云南
2008 Travelling @ 天津
乱七八糟的收集
Ex-Colleagues
Jason Lei's Space
.Net Life
(rss)
Jasper
(rss)
Michelles Space
xingd.net
(rss)
玻璃缸
(rss)
短鲷生活
海阔天空
录一室
(rss)
完美的泡菜
(rss)
怡红公子
(rss)
竹叶尖的BLOG
常用链接
Engadget 中文版
PDFCHM eBooks
SitePoint Forums
The Code Project
安利上海直销店
哈尔滨工业大学
哈工大紫丁香
海归论坛
(rss)
沙坪坝区中医院
兄弟情深
没有可乐的日子
葡萄树下不乘凉
(rss)
斯普特尼克
猪头小队长
(rss)
积分与排名
积分 - 3145044
排名 - 6
最新评论
阅读排行榜
推荐排行榜