最近要实现一个功能就是模仿iE8 或者搜狗浏览器 实现页面查找关键字,在网上找了好久,都不是太理想,一般都是实现顺序查找,并没有上一个,下一个的效果
下面是我找到代码 只实现顺序查找。
<script language="JavaScript">var NS4 = (document.layers);
var IE4 = (document.all);
var win = parent.frames['frameone'];
var n = 0;function FindInPage(str){
var txt, i, found; if (str == "")
return false; if (NS4) { if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++; if (n == 0)
alert("Not found.");
} if (IE4) {
txt = win.document.body.createTextRange(); for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character");
txt.moveEnd("textedit");
} if (found) {
txt.moveStart("character");
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
} else
{
if (n > 0) {
n = 0;
findInPage(str);
} else
alert("Not found.");
}
} return false;
}
下面是我找到代码 只实现顺序查找。
<script language="JavaScript">var NS4 = (document.layers);
var IE4 = (document.all);
var win = parent.frames['frameone'];
var n = 0;function FindInPage(str){
var txt, i, found; if (str == "")
return false; if (NS4) { if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++; if (n == 0)
alert("Not found.");
} if (IE4) {
txt = win.document.body.createTextRange(); for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character");
txt.moveEnd("textedit");
} if (found) {
txt.moveStart("character");
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
} else
{
if (n > 0) {
n = 0;
findInPage(str);
} else
alert("Not found.");
}
} return false;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function find(){
var val = document.all("txt").value;
var r = document.body.createTextRange();
r.findText(val);
r.select();
}
//-->
</SCRIPT>
</HEAD> <BODY>
<input type="text" id="txt"><input type="button" value="submit" onclick="find()"><br>
aaaaaa<br>
bbbbbb<br>
cccccc<br>
dddddd<br>
</BODY>
</HTML>