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

2023-01-14 14:48:41 +08:00
 MissSixty
后端返回 html 网页的字符串,我需要将字符串里添加一段固定的<div>标签和给字符串里 table 添加属性 border='1'。
大佬们有什么推荐的方法或者库吗?
2667 次点击
所在节点    程序员
30 条回复
xiangyuecn
2023-01-14 17:49:14 +08:00
#12 的 也许才是跨语言并且简单的实现,其他的解析要么太重量级了

正则:只要特征明显,正则替换就容易 且 准确;特征不明显 容易搞砸 且 不容易调试发现错误
Track13
2023-01-14 18:43:55 +08:00
推荐 10 楼的方法
iOCZ
2023-01-14 18:58:52 +08:00
源头修改
yyf1234
2023-01-14 19:44:06 +08:00
看起来像是打印表单,其实这种后端返回数据,前端生成表单更简单一点
zhuangpipi
2023-01-14 19:45:14 +08:00
html to ast ,修改完再 generate 成 html
cpstar
2023-01-14 20:29:02 +08:00
赞同 20#,提了这个建议不行,那个建议也不行,那不就是既要又要。所有的方法都是有优有劣的,只看劣势不看优势,那没有万全之策。
MissSixty
2023-01-14 20:29:26 +08:00
这个需求目的是后端返回 html 字符串前端调用浏览器打印,打印前在字符串中插入特定内容<div>和改变字符串中 table 的样式,目前总结了几种方法。
1 、在 HTML 末尾加段<script>,该 HTML 加载完就会自行 js 并做修改:这种行为有些危险,html 内容是用户随便写的。
2 、后端在 html 里留两个槽,直接 replace:这就相当于把问题丢给了后端去解决,既然都能留槽了那直接让后端来做多好。留槽和插入 div 也没啥区别。
3 、正则:改变 table 属性挺好用,但插入特定内容的 div 有不确定性,不敢保证写出的正则就那么强大。
4 、document.implementation.createHTMLDocument():内存中创建空白网页,然后使用 documentElement.innerHTML 来存放内容,接着就使用常规 dom 操作。目前使用此方法。
5 、innerHTML:此方法使用跟第 2 个类似,但它会自动去掉 html 、head 、body 标签,不是完整的网页了。
6 、new DOMParser()​​:使用起来很简单,也是个能解决问题的方法,但综合考虑还是第 2 个好一些。
webcape233
2023-01-15 09:31:35 +08:00
考虑下 css 直接加样式吧
duan602728596
2023-01-15 09:35:53 +08:00
虽然都说 js 操作 dom 的性能差,但是还没有差到操作几个 div 就被人说性能开销太大了的程度。
izoabr
2023-01-15 21:30:17 +08:00
后端给的内容能协商不?让加个 id 或者 class 呗

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

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

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

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

© 2021 V2EX