js 编辑 HTML 字符串,有推荐的方法吗?

2023-01-14 14:48:41 +08:00
 MissSixty
后端返回 html 网页的字符串,我需要将字符串里添加一段固定的<div>标签和给字符串里 table 添加属性 border='1'。
大佬们有什么推荐的方法或者库吗?
2431 次点击
所在节点    程序员
30 条回复
tutou
2023-01-14 14:56:05 +08:00
你添加一段 js ,直接改 dom 不就行了
fason1995
2023-01-14 15:04:28 +08:00
先把 html 字符串 innerHTML 到 dom 中,然后选择 dom ,添加属性就好了
MissSixty
2023-01-14 15:07:04 +08:00
@tutou
@fason1995
这种方法不太好,性能开销太大了。
lukaz
2023-01-14 15:08:11 +08:00
可以考虑用正则匹配替换
DrugsZ
2023-01-14 15:09:37 +08:00
直接把<table 替换成 <table border="1"
gydi
2023-01-14 15:11:24 +08:00
正则或者 DOMParser
fox0001
2023-01-14 15:12:07 +08:00
@tutou #1 我也推荐这个做法。在该 HTML 末尾加段<script>,该 HTML 加载完就会自行 js 并做修改。至于 js ,可以用 dom 的相关方法,不用替换字符串那么麻烦。
MissSixty
2023-01-14 15:26:56 +08:00
@lukaz
@DrugsZ
@gydi
正则局限性太大,字符串插入 div 容易出错
learningman
2023-01-14 15:29:11 +08:00
@MissSixty #8 容易出错就 DomParser 啊,楼上不是有人说过了吗
lanced
2023-01-14 16:06:32 +08:00
可以看一下 DocumentFragment ,创建并组成一个 DOM 子树,再用 2 楼的方法去修改,再插入 Document ,只触发一次重渲染
molvqingtai
2023-01-14 16:09:38 +08:00
@lukaz 不要误导人,能精确匹配 html 的正则还没有写出来
AyaseEri
2023-01-14 16:21:15 +08:00
让后端在 html 里给你留两个槽,你直接 replace
mango111
2023-01-14 16:21:52 +08:00
之前用过一个库 cheerio https://www.npmjs.com/package/cheerio
可以解析 html 字符串,用类 jQuery 方式修改 dom 并输出新字符串
codehz
2023-01-14 16:49:11 +08:00
table 的 border 真的需要改 html 吗( css 不可以吗
humbass
2023-01-14 16:58:45 +08:00
String.replace 支持正则,基础还是需要敲打的
lzgshsj
2023-01-14 17:01:09 +08:00
cheerio+1
lneoi
2023-01-14 17:15:37 +08:00
htmlparser2 找个类似的解析库操作一下
renmu
2023-01-14 17:21:27 +08:00
改 dom 性能差,那我想知道你们是怎么做交互的
MissSixty
2023-01-14 17:42:50 +08:00
@renmu 不交互,后端返回 html ,前端增加点 dom ,然后调用浏览器打印
darkengine
2023-01-14 17:43:08 +08:00
建议先考虑怎么实现,再考虑性能问题,不要提前优化。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/908899

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX