通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> WEB开发 >> JavaScript >> 应用技巧 >> 文章正文
javascript实例 站内搜索例子 (二)
责任编辑:admin   更新日期:2005-8-6
脚本说明:
第一步:把如下代码加入<body>区域中
<form name="database">
<input type="hidden" name="list" value='http://www.webcrawler.com~Webcrawler|keywords for first file go
here separated by spaces^A great search engine from the makers of AOL!*http://java2000.126.com~java2000
collections|java javascript search html download cgi perl dhtml games activex 下载 脚本^coolest java and
javascript collections for internet surfers to enhance web page!
*http://www.javagoodies.com/~javagoodies|ActiveX ASP C/C++ CGI Databases java javascript^coolest
javagoodies!*'>
</form>
<p>
<script language="JavaScript">
<!--
version = 1.0;
// -->
</script>
<script language="JavaScript1.1">
<!--
version = 1.1;
// -->
</script>
<script language="JavaScript">
<!--
// When set to true, searching for "fun*y" matches in the string "fun sky".
// (it will also match the string "fun and here is some long dummy text for you"
// which is obviously not what they were looking for, so we suggest you set
// match_across_word_boundaries to false)
// When set to false, the * operator will not match across word boundaries so
// the above example will not match.
match_across_word_boundaries = false; // false is suggested strongly

// ************ NO NEED TO MODIFY ANYTHING BELOW THIS POINT ************

function Page(url,title,keywords) {
while ((url.length > 0) && (url.charAt(0) == " ")) {
url = url.substring(1,url.length);
}
this.url = url;
while ((title.length > 0) && (title.charAt(0) == " ")) {
title = title.substring(1,title.length);
}
this.title = title;
this.keywords = keywords;
return this;
}
function Database() {
var pos = 0;
while ((pos1 = amorphous.indexOf("~",pos)) != -1) {
pos2 = amorphous.indexOf("|",pos1+1);
pos3 = amorphous.indexOf("*",pos2+1);
if ((pos2 != -1)
&& (pos2 < pos3) && (pos3 <= amorphous.indexOf("*",pos))) {
this[database_length++] = new Page(amorphous.substring(pos,pos1),
amorphous.substring(pos1+1,pos2),
amorphous.substring(pos2+1,pos3));
pos = pos3+1;
} else { // error reading amorphous database
if (pos+30 <= amorphous.length)
alert('Error reading in amorphous database around "'
+ amorphous.substring(pos,pos+30) + '"');
pos = amorphous.indexOf("*",pos) + 1;
}
}
return this;
}
var array = new Object();
array_length = 0; // Netscape 2 fix
var position = new Object();
position_length = 0; // Netscape 2 fix
function pattern(str) {
array_length = position_length = 0;
while ((str.length > 1) && (str.charAt(0) == "*")) {
str = str.substring(1,str.length);
}
while ((str.length > 1) && (str.charAt(str.length-1) == "*")) {
str = str.substring(0,str.length-1);
}
if (str == "*")
return "(true)";
if (str.indexOf("*") == -1) {
array[array_length++] = str;
pat = "(combo.indexOf(array[0]) != -1)";
} else {
left = right = 0;
pat2 = "";
pat = "(((position[0] = combo.indexOf(array[0])) != -1)";
while ((right = str.indexOf("*",left)) != -1) {
array[array_length++] = str.substring(left,right);
pat += " && (position["+(position_length)+"] < (position["
+(++position_length)+"] = combo.indexOf(array["+(array_length)
+"],position["+(position_length-1)+"]+array["+(array_length-1)+"].length"+")))";
if (!match_across_word_boundaries)
pat2 = " && (no_back_up = ((back_up_pos += combo.substring("
+"temp_pos = back_up_pos = position["
+(position_length-1)+"]+array["+(array_length-1)+"].length,position["
+ (position_length) + "]).lastIndexOf(' ')) < temp_pos))" + pat2;
left = right+1;
}
array[array_length++] = str.substring(left,str.length);
pat += pat2+")";
}
return pat;
}
function search(str) {
menu_length = 0;
temp = new Object();
temp_length = 0;
words_length = 0;
words = new Object();
pos = 0;
while ((pos = str.indexOf(" ")) != -1
&& and_search != "exact") {
words[words_length] = str.substring(0,pos);
if (words[words_length].length > 0)
words_length++;
if (str.length == 1)
str="";
else
str = str.substring(pos+1,str.length);
}
if (str.length > 0)
words[words_length++] = str;
for (q=0;q<words_length;q++) {
temp_length = 0;
str = words[q].toLowerCase();
pattern_string = pattern(str);
start_pos = back_up_pos = 0;
len = (and_search=="and"&&q>0?menu_length:database_length);
for (n=0; n<len; n++) {
no_back_up = true;
position_length = 0;
if (and_search=="and"&&q>0) {
combo = (menu[n].title + " " + menu[n].keywords).toLowerCase();
} else {
combo = (database[n].title + " " + database[n].keywords).toLowerCase();
}
combo = combo.substring(start_pos,combo.length);
if (eval(pattern_string)) { // found
temp[temp_length++] = (and_search=="and"&&q>0?menu[n]:database[n]);
start_pos = 0;
} else if (!no_back_up) { // try pattern again in new spot
n--;
start_pos += back_up_pos+1;
} else { // not found
start_pos = 0;
}
}
if (and_search!="and" && q>0) {
added = 0;
for (i=0;i<temp_length;i++) {
duplicate = false;
for (j=0;j<menu_length&&!duplicate;j++) {
if (menu[j] == temp[i]) {
duplicate = true;
}
}
if (!duplicate)
menu[menu_length+(added++)] = temp[i];
}
menu_length += added;
} else {
for(h=0;h<temp_length;h++)
menu[h] = temp[h];
menu_length = temp_length;
}
}
}
function entry() {
if ((document.entryform.keyword.value.length == 0)
|| (document.entryform.keyword.value == " ")) {
alert("First you must enter a keyword to search for.");
return false;
}

[1] [2] [3] [4] [5] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程