在搜索里利用JS实现关键字高亮显示
第41章 在搜索里利用JS实现关键字高亮显示
1. 问题概述
全文搜索里,在客户端利用JS的方式可以实现关键字高亮显示,同时记录站点的访问次数,如下图:
2. 程序说明
A:在jsp里,<body onload=“hWord();”>调用
<script type=“text/javascript”>
//将页面中的关键字高亮显示,在body的onload中调用
function HighLight(nWord){
var orange = document.body.createTextRange();
while(orange.findText(nWord)){
orange.pasteHTML(“<span style=’color:black;background-color: #ff9999;’>” + orange.text + “</span>”);
orange.moveStart(‘character’,1);
}
}
//将页面中的关键字高亮显示,在body的onload中使用(支持多个关键字,多个关键字用空格分开)
function highword(nWord)
{
//将全角空格(逗号)转半角空格
nWord = nWord.replace(/\ /g,“|”);
nWord = nWord.replace(/\,/g,“|”);
nWord = nWord.replace(/\,/,“|”);
nWord = nWord.replace(/\ /g,“|”);
var Arr = nWord.split(“|”);
for(var i=0;i<Arr.length;i++){
HighLight(Arr[i]);
}
}
function hWord(){
highword(document.getElementById(“key”).value);
}
</script>
B:在客户端站点访问的次数
<script language=JavaScript>
var caution = false
function setCookie(name, value, expires, path, domain, secure) {
var curCookie = name + “=” + escape(value) +
((expires) ? “; expires=” + expires.toGMTString() : “”) +
((path) ? “; path=” + path : “”) +
((domain) ? “; domain=” + domain : “”) +
((secure) ? “; secure” : “”)
if (!caution || (name + “=” + escape(value)).length <= 4000)
document.cookie = curCookie
else
if (confirm(“Cookie exceeds 4KB and will be cut!”))
document.cookie = curCookie
}
function getCookie(name) {
var prefix = name + “=”
var cookieStartIndex = document.cookie.indexOf(prefix)
if (cookieStartIndex == -1)
return null
var cookieEndIndex = document.cookie.indexOf(“;”, cookieStartIndex + prefix.length)
if (cookieEndIndex == -1)
cookieEndIndex = document.cookie.length
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}
function deleteCookie(name, path, domain) {
if (getCookie(name)) {
document.cookie = name + “=” +
((path) ? “; path=” + path : “”) +
((domain) ? “; domain=” + domain : “”) +
“; expires=Thu, 01-Jan-70 00:00:01 GMT”
}
}
function fixDate(date) {
var base = new Date(0)
var skew = base.getTime()
if (skew > 0)
date.setTime(date.getTime() – skew)
}
var now = new Date()
fixDate(now)
now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000)
var visits = getCookie(“counter”)
if (!visits)
visits = 1
else
visits = parseInt(visits) + 1
setCookie(“counter”, visits, now)
document.write(“<br /><div style=’font-size: 18px; padding-bottom: 2px; color: #0000aa’>您是第“ + visits + “次访问本搜索!</div>”)
</script>