搜索栏可搜索所有外部html页面

问题描述 投票:1回答:3

我创建了一个网站,它需要一个搜索功能。该网站有一堆html页面示例:index.html,about.html,contact.html等等...搜索栏位于每个页面的导航栏中,我希望能够在索引上输入内容。 html页面,如果about.html页面中有结果显示该结果。现在我在我正在浏览的页面上进行搜索时没有问题,但我甚至不知道从哪里开始能够搜索“外部html页面”示例about.html。我有搜索和浏览互联网找不到任何东西。你能用Jquery或javascript做到这一点吗?

任何帮助或建议将不胜感激。提前致谢

javascript jquery html
3个回答
0
投票

您可以使用JavaScript Ajax调用来获取您拥有的所有页面,并使用正则表达式来查找您正在寻找的内容。

这是https://medium.freecodecamp.org/client-side-web-scraping-with-javascript-using-jquery-and-regex-5b57a271cb86的例子

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script>             
 $.get('https://www.html5rocks.com/en/tutorials/cors/', function(response) {                    
  var query=(response.search(/Using CORS - HTML5 Rocks/i));
  if(query>-1){
    console.log("https://www.html5rocks.com/en/tutorials/cors/")
  }
  else{
    console.log("not found")
  }
});
</script>
</body>
</html>

我建议使用某种类型的数据库来处理这类东西


0
投票

你可以做这样的事情来实现谷歌搜索

site:lifewire.com power search tricks

看看w3schools如何实现他们的搜索框 这可以是一种方法。由于Google会在网络上的每个网页上搜索他们的关键字。您可以使用他们的功能并根据您的要求进行模塑。


0
投票

我为此写了这段代码:

重要提示:请勿在<body>底部使用此脚本,而应将其写入<head>标记中。如果你在<body>中写这个,你总是得到当前页面作为搜索创建之一。

    var myPages = ["About.html", "Index.html", "Store.html"]; //your pages in here
    var searchResult = []; //here we have result
    var searchFor = "chicken soup"; //what we search

    $.each(myPages, function (index, value) {

        $.ajax({
            async: false,
            type: 'GET',
            url: value,
            success: function (data) {

                var body = $(data).text().replace(/\s+/gm, ' ');

                if (body.indexOf(searchFor) >= 0) {
                    searchResult.push(value);
                }

            }
        });

        if (index + 1 == myPages.length) {
                alert(searchResult);
        }

    });

我强烈认为你不应该这样做。因为它真的很慢。想象一下,你有50页,客户应该等待50页的搜索。相反,Wisnu建议从数据存储区或索引页或数据库中获取详细信息....

© www.soinside.com 2019 - 2024. All rights reserved.