首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js搜索页面内容

在JavaScript中搜索页面内容通常指的是在网页上实现一个功能,允许用户输入关键词并搜索页面上的文本,然后高亮显示匹配的结果。下面我会给出一个基础的概念解释,以及一个简单的示例代码来实现这个功能。

基础概念

  1. DOM操作:JavaScript可以通过DOM(文档对象模型)来访问和操作网页上的元素和内容。
  2. 正则表达式:用于匹配字符串中符合特定模式的文本。
  3. 事件监听:JavaScript可以监听用户的输入事件,如键盘输入,然后执行相应的操作。

示例代码

以下是一个简单的JavaScript搜索页面内容的示例:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Search Page Content</title>
<style>
    .highlight {
        background-color: yellow;
    }
</style>
</head>
<body>

<input type="text" id="searchInput" placeholder="Search...">
<button onclick="searchContent()">Search</button>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. ... (更多文本内容)</p>

<script>
function searchContent() {
    // 获取用户输入的关键词并去除首尾空格
    var keyword = document.getElementById('searchInput').value.trim();
    // 如果关键词为空,则不执行搜索
    if (keyword === '') return;

    // 移除之前的高亮显示
    var highlights = document.getElementsByClassName('highlight');
    while (highlights.length > 0) {
        highlights[0].classList.remove('highlight');
    }

    // 创建正则表达式,'gi'表示全局和不区分大小写
    var regex = new RegExp(`(${keyword})`, 'gi');

    // 获取页面上所有的文本内容
    var textNodes = getTextNodes(document.body);

    // 遍历文本节点并搜索关键词
    textNodes.forEach(function(node) {
        if (node.nodeType === 3) { // 文本节点
            var match = node.nodeValue.match(regex);
            if (match) {
                var span = document.createElement('span');
                var beforeText = node.nodeValue.substring(0, match.index);
                var matchText = node.nodeValue.substring(match.index, match.index + keyword.length);
                var afterText = node.nodeValue.substring(match.index + keyword.length);

                span.appendChild(document.createTextNode(beforeText));
                var highlightSpan = document.createElement('span');
                highlightSpan.classList.add('highlight');
                highlightSpan.appendChild(document.createTextNode(matchText));
                span.appendChild(highlightSpan);
                span.appendChild(document.createTextNode(afterText));

                node.parentNode.replaceChild(span, node);
            }
        }
    });
}

// 递归获取DOM树中的所有文本节点
function getTextNodes(element) {
    var nodes = [];
    for (var i = 0; i < element.childNodes.length; i++) {
        var child = element.childNodes[i];
        if (child.nodeType === 3) { // 文本节点
            nodes.push(child);
        } else if (child.nodeType === 1) { // 元素节点
            nodes = nodes.concat(getTextNodes(child));
        }
    }
    return nodes;
}
</script>

</body>
</html>

这个示例代码实现了一个简单的页面内容搜索功能。用户可以在输入框中输入关键词,然后点击搜索按钮来高亮显示页面上所有匹配的文本。这个示例使用了DOM操作来访问和修改页面内容,正则表达式来匹配关键词,以及事件监听来响应用户的搜索操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

js页面刷新或关闭时弹框消失_js刷新页面如何保留页面内容

该事件可用于弹出对话框,提示用户是继续浏览页面还是离开当前页面。对话框默认的提示信息根据不同的浏览器有所不同,标准的信息类似 “确定要离开此页吗?”。该信息不能删除。...触发于: 关闭浏览器窗口 通过地址栏或收藏夹前往其他页面的时候 点击返回,前进,刷新,主页其中一个的时候 点击 一个前往其他页面的url连接的时候 调用以下任意一个事件的时候:click,document...当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。 重新赋予location.href的值的时候。...版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

11.9K40
  • 揭秘百度搜索与页面内容大小、字符之间的关系

    如果百度快照不完整,那么是不是代表百度蜘蛛没有抓取收录完整的页面内容呢?...不是,百度快照的生成,也不是那么简单,也涉及到很多环节,导致不显示完整的页面内容,也是有很多因素,所以不能简单的认为百度蜘蛛没有收录完整的页面。...不是,抓取诊断工具,只是显示页面前200KB的内容,我们一般一个页面的内容大小都在100KB以内的。 百度是否要求页面不能出现特殊字符呢?...解决办法很简单,只要做以下几点工作就可以了: 1、页面长度大小控制在128K以内; 2、合并JS、CSS; 3、禁止直接将图片二进制内容放到了html中; 4、与页面无关的元素,最好都用JS封装,不用直接显示在页面...html中; 5、万一,这些都没解决,那一定要把页面主体内容放在最前面。

    769100

    页面内容最大宽度推导

    页面内容最大宽度推导 由 Ghostzhang 发表于 2022-09-30 17:02 在制定布局规范的过程中遇到了一个问题,内容区域的最小最大宽要定多少呢?...因为我用的是『带鱼屏』,所以又发现一个有意思的现象,屏幕变大了,网站的内容却并没有随之变大 是因为产品的设计者都没有发现这个现象,留着这么多的空间浪费着不用吗?...至此,完成了页面内容区域最大宽度的推导。 其他的一些问题,如 限制了宽度,那应如何对齐? 及 空间是否被浪费?等问题,请见附件PPT。本地下载PPT。...《页面重构中的设计模式》 from Ghost Zhang 文章被分类到: 经验总结 文章被贴上标签: 用户体验 专业度 设计

    1.1K10

    搜索引擎为什么不收录网站内容页面的原因有哪些?

    一、百度搜索 百度搜索是现在缺什么就优先收录什么,其次就是对比哪个网站的内容价值更符合用户需要就收录谁的,所以能看到索引量上涨下降,如果网站内容不收录,那问题大多数就是这两个原因之一。...二、头条搜索 头条搜索是不缺内容的,但是头条搜索很重视网站的知名度,也理解为是网站的运营时长,他收录网站内容比较挑剔,大多数情况是补充自身缺乏的内容提供给用户搜索,不过已经有多元化收录的迹象了。...网站的域名在国内搜素引擎必须要有ICP备案,这是收录的最基本的要求,另外国内搜素引擎重视的自身利益最大化,商业以圈地捆绑为主,玩的是缺什么内容就自己去补充什么内容,朝着私域化内容搜索平台方向发展,一股劲的脱离网络搜索引擎内容信息来源全网的本质...网站不收录大多数指的是内容页面,做网站如果不被搜索引擎收录就会很头疼,因为收录=关键字=排名=流量=营销,所以收录是源头,但是现在的搜素引擎不会像以前轻易就收录网站,大多数网站首页还是比较容易收录的。...二、bing搜索 bing搜索的收录效果也是不错的,通常情况收录比较及时,也算得上来者不拒,跟谷歌搜素差不多,但是bing搜索比较重视清除没有价值或者抄袭的内容页面。

    71910
    领券