帝国论坛帝国网站管理系统交流区帝国CMS使用交流[原创]js方法极简实现搜索到的内容页关键词高亮显示 【本版专题贴子】  
 1/2     1 2 ›› ›|
主题:[原创]js方法极简实现搜索到的内容页关键词高亮显示 [加入收藏夹]   

ai1
用户头衔:举人

精华贴   :0
发贴数   :182
经验值   :1695
注册时间:2012-01-31
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[原创]js方法极简实现搜索到的内容页关键词高亮显示
关键词高亮显示一般指搜索列表页上的关键词高亮显示,并不延申到内容页,这应该是个缺憾,对读者不甚友好。最近,尝试做个改善,实现内容页里的关键词高亮显示。上一个帖子介绍了php方法,只适用于在动态页里做,比如手机版内容页。这里的js方法应用范围更广,适合于静态和动态的内容页,具体如下:
1、在搜索页主程序(后台-模板管理-全站搜索模板以及静态页/e/sch/index.html)里把关键词通过链接参数传递到内容页,如?keyboard=<?=preg_replace('/\s+/',' ',trim($_GET['keyboard']))?>
2、在内容页模板文章标题上方的适当的元素属性里添加id="schs";
3、内容页模板最后直接加几行简单的js代码(引号须改为英文的!)并更新所有内容页和动态页即可:
<script type="text/javascript">
//关键词高亮显示
var params=new URLSearchParams(window.location.search); //获取传参
var search=decodeURI(params.get('keyboard')).split(" "); //关键词分割成数组(多个之间以空格分开)
var highlights=search.map(v=>"<font color=red>"+v+"</font>"); //关键词高亮样式
var replacements=Object.fromEntries(search.map((key,index)=>[key,highlights[index]])); //关键词与高亮关键词键值对
var reStr='('+search.join('|')+')'; //正则替换样式
var re=new RegExp(reStr,'g');
document.getElementById('schs').innerHTML=document.getElementById('schs').innerHTML.replace(re,item=>replacements[item]); //获取文章并替换
//分页地址添加关键词传参
var links=document.querySelectorAll("div.epages a");
links.forEach(function(link) {link.href=link.href+'?'+params;});
</script>
以上方法已经通过测试和实际应用,效果很好。各分页也可以正常高亮显示搜索关键词。

[该贴被修改 17 次,最后修改时间 2025-12-16 15:33:14 ]


时间是把金钥匙
2025-11-15 15:22:55 已设置保密 顶部 回复 引用 报告 编辑 删除

csdn2
用户头衔:探花

精华贴   :0
发贴数   :4978
经验值   :14776
注册时间:2013-11-21
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

支持下




2025-11-16 08:06:07 已设置保密 顶部 回复 引用 报告 编辑 删除

ggqm520
用户头衔:进士

精华贴   :0
发贴数   :1212
经验值   :5199
注册时间:2010-08-15
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

感谢楼主,楼主威武



基于帝国CMS的Ai即时通讯聊天室:https://www.wenyunfang.com/e/extend/chat/ 签名广告位出售中!!!!!
2025-11-16 14:00:37 已设置保密 顶部 回复 引用 报告 编辑 删除

点到为止
用户头衔:探花

精华贴   :0
发贴数   :7052
经验值   :21989
注册时间:2008-01-07
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

支持一下




2025-11-17 08:05:23 已设置保密 顶部 回复 引用 报告 编辑 删除

hibaidu
用户头衔:探花

精华贴   :0
发贴数   :4380
经验值   :13382
注册时间:2010-05-26
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

支持一下




2025-11-19 08:06:22 已设置保密 顶部 回复 引用 报告 编辑 删除

cnnb
用户头衔:探花

精华贴   :0
发贴数   :6346
经验值   :18141
注册时间:2008-10-14
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

支持下




2025-11-20 08:05:00 已设置保密 顶部 回复 引用 报告 编辑 删除

hibaidu
用户头衔:探花

精华贴   :0
发贴数   :4380
经验值   :13382
注册时间:2010-05-26
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

支持一下




2025-11-21 08:41:20 已设置保密 顶部 回复 引用 报告 编辑 删除

luoto
用户头衔:探花

精华贴   :0
发贴数   :6236
经验值   :18742
注册时间:2008-11-08
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

支持下




2025-11-23 07:54:30 已设置保密 顶部 回复 引用 报告 编辑 删除

cnnb
用户头衔:探花

精华贴   :0
发贴数   :6346
经验值   :18141
注册时间:2008-10-14
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

支持下




2025-12-06 08:29:59 已设置保密 顶部 回复 引用 报告 编辑 删除

ai1
用户头衔:举人

精华贴   :0
发贴数   :182
经验值   :1695
注册时间:2012-01-31
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 10 楼]

再优化一下变量reStr的表达式,如原帖。更简洁!

[该贴被修改 2 次,最后修改时间 2025-12-16 18:32:05 ]


时间是把金钥匙
2025-12-16 18:30:55 已设置保密 顶部 回复 引用 报告 编辑 删除
 1/2     1 2 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1