在搜索里利用JS实现关键字高亮显示

第41章 在搜索里利用JS实现关键字高亮显示

1. 问题概述
全文搜索里,在客户端利用JS的方式可以实现关键字高亮显示,同时记录站点的访问次数,如下图:

2. 程序说明

A:jsp,<body onload=“hWord();”>调用

<script type=“text/javascript”>

//将页面中的关键字高亮显示,bodyonload中调用

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);

}

}

//将页面中的关键字高亮显示,bodyonload中使用(支持多个关键字,多个关键字用空格分开)

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>

热门文章