⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchsource.htm

📁 JavaScript编程实例6
💻 HTM
字号:
<html>
  <head>
    <title>被搜索页</title>
  </head>

  <body>
    <form name="database">
      <input type="hidden" name="list"
        value="http://www.cctv.com.cn~央视国际网站|cctv 中国中央电视台 公告板 电视指南 新闻频道 财经频道 国家地理 视听在线^为全国电视观众提供全方位的信息和帮助*
               http://www.sina.com.cn~最全的中文新闻发部站点|sina 新浪 新闻 super 王志东 聊天室^国内最大的新闻网站!*
               http://www.163.net~最大的综合中文网站|163 netease 网易 丁磊 新闻 yeah 126 娱乐 freemail 聊天室^最大的综合中文网站,为你提供全方位的各种信息,是上网的好去处!*
               http://www.sohu.com~最大的中文引擎搜索站点|sohu search 搜索 引擎 张朝阳 聊天室^最大的中文引擎搜索站点,足不出户,览尽四海!">
    </form>

    <script language="JavaScript">
    <!--
      function Page(url,title,keywords,description)
      {
        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;
        this.description = description;
        return this;
      }

      function Database()
      {
        var pos = 0;
        while ((pos1 = amorphous.indexOf("~",pos)) != -1)
        {
          pos2 = amorphous.indexOf("|",pos1+1);
          pos3 = amorphous.indexOf("^",pos2+1);
          pos4 = amorphous.indexOf("*",pos3+1);
          if ((pos2 != -1)&&(pos2 < pos3)&&(pos3 < pos4)&&(pos4 <= amorphous.indexOf("*",pos)))
          {
            this[database_length++] = new Page(amorphous.substring(pos,pos1),
            amorphous.substring(pos1+1,pos2),
            amorphous.substring(pos2+1,pos3),
            amorphous.substring(pos3+1,pos4));
            pos = pos4+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;
      }

      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();
          len = (and_search=="and"&&q>0?menu_length:database_length);
          for (n=0; n<len; n++)
          {
            if (and_search=="and"&&q>0)
            {
              combo = (menu[n].title + " " + menu[n].description + " " + menu[n].keywords).toLowerCase();
            }
            else
            {
              combo = (database[n].title + " " + database[n].description + " " + database[n].keywords).toLowerCase();
            }
            if (combo.indexOf(str) != -1) // found
              temp[temp_length++] = (and_search=="and"&&q>0?menu[n]:database[n]);
          }
          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("你必须填写关键字!");
          return false;
        }
        and_search = (document.entryform.and_or.selectedIndex == 0?"and":"or");
        if (document.entryform.and_or.selectedIndex == 2)
          and_search = "exact";
        location.href = location.pathname + "?" + escape(document.entryform.keyword.value) + (and_search != "or"?"&"+and_search:"");
        return false;
      }

      function redWord(str)
      {
        for(r=0; r<words_length; r++)
        {
          pos = -3;
          word = words[r].toLowerCase();
          while ((pos = str.toLowerCase().indexOf(word,pos+3)) != -1)
          {
            val = pos+word.length;
            str = str.substring(0,pos) + "*" + str.substring(pos,val) + "|" + str.substring(val,str.length);
          }
        }
        pos = -16;
        while ((pos = str.toLowerCase().indexOf("*",pos+16)) != -1)
          str = str.substring(0,pos) + "<font color=red>" + str.substring(pos+1,str.length);
        pos = -7;
        while ((pos = str.toLowerCase().indexOf("|",pos+7)) != -1)
          str = str.substring(0,pos) + "</font>" + str.substring(pos+1,str.length);
        return str;
      } 

      var amorphous = document.database.list.value;
      temp_str = amorphous.substring(amorphous.length-2,amorphous.length);
      if (temp_str.indexOf("*") == -1)
        amorphous += "* ";
      else
        amorphous += " "; // amorphous database must have characters after last asterisk 

      database_length = 0; // Netscape 2 fix
      var database = new Database(); // read in from amorphous database 

      menu_length = 0; // Netscape 2 fix
      var menu = new Object(); 

      string = "";
      and_search = "or";
      if (location.search.length > 1)
      {
        string = unescape(location.search.substring(1,location.search.length));
        pos = 0;
        while ((pos = string.indexOf('"',pos)) != -1)
        {
          string = string.substring(0,pos) + '\\"' + string.substring(pos+1,string.length);
          pos += 2;
        }
        if (string.substring(string.length-4,string.length) == "&and")
        {
          string = string.substring(0,string.length-4);
          and_search = "and";
        }
        else if (string.substring(string.length-6,string.length) == "&exact")
        {
          string = string.substring(0,string.length-6);
          and_search = "exact";
        }
        else if (string.substring(string.length-3,string.length) == "&or")
        {
          string = string.substring(0,string.length-3);
          and_search = "or";
        }
        search(string);
      } 

      document.write('<form name="entryform" onSubmit="return entry()">'+'Search for: <input type="text" size=22 '+'name="keyword" value="'+string+'"> '+'<select name="and_or" '+'size=1><option'+(and_search=="and"?" selected":"")+'>"与"逻辑 '+'<option'+(and_search=="or"?" selected":"")+'>"或"逻辑 '+'<option'+(and_search=="exact"?" selected":"")+'>精确匹配 '+'</select> '+'<input type="button" value="Search" onClick="entry()"></form><br>');
      if (location.search.length > 1)
        document.write('查询结果:<br><br>\n');

      for (n=0; n<menu_length; n++)
        document.write('<a href="'+menu[n].url+'">'+menu[n].title+'</a><br>'+redWord(menu[n].description)+'<br>Keywords: '+redWord(menu[n].keywords)+'<br><br>\n');
      if ((menu_length == 0) && (location.search.length > 1))
        document.write('对不起:你查询的关键字"'+string+'"没有发现!\n');
    // --> 
    </script>
  </body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -