DOMParser()移除空格问题:文本前的空格为何消失?
问题
示例代码:
const parser = new DOMParser(); const foo = parser.parseFromString('<p> Foo</p>', 'text/html'); console.log(foo);
运行后得到如下结果:
请问文本“Foo”前的所有空格为何消失了?
解答
这是HTML的空白字符处理规则导致的:
- HTML解析器(包括DOMParser)会自动处理元素内的连续空白字符,不管是空格、制表符还是换行符,都会被合并成单个空格,同时前导、尾随的空白也会被直接忽略。
<p>作为普通块级元素,默认遵循这个规则,所以你输入的多个前导空格会被解析器直接处理掉。
如果要保留连续空格,可以用这几种方法:
- 用
<pre>标签包裹文本,它会原样保留所有空白格式; - 把普通空格替换成
(非换行空格); - 给
<p>标签添加CSS样式white-space: pre,强制元素保留空白字符。
内容的提问来源于stack exchange,提问作者nerdess
相关产品推荐
相关产品推荐

