Javascript 为什么html元素的innerText属性只显示body元素的innerText?
Javascript 为什么html元素的innerText属性只显示body元素的innerText?,javascript,html,ecmascript-6,ecmascript-5,Javascript,Html,Ecmascript 6,Ecmascript 5,console.log(document.getElementsByTagName('html')['0'].textContent); log(document.getElementsByTagName('html')['0'].innerText) 文件 段落的结尾 下面的代码按照预期的行为工作。我想你会对他们感到困惑。看看这里 其中两个: 虽然textContent获取所有元素的内容,包括和元素,但innerText不会,只显示人类可读的元素 innerText知道样式设置,不会返回隐藏
console.log(document.getElementsByTagName('html')['0'].textContent);
log(document.getElementsByTagName('html')['0'].innerText)代码>
文件
段落的结尾
下面的代码按照预期的行为工作。我想你会对他们感到困惑。看看这里
其中两个:
虽然textContent
获取所有元素的内容,包括
和
元素,但innerText
不会,只显示人类可读的元素
innerText
知道样式设置,不会返回隐藏元素的文本,而textContent
会返回
要删除空白和新行,可以使用regex replace。
//用replace删除新行和空白
console.log(document.getElementsByTagName('html')['0'].textContent.replace(/[\n\r]+\s]{2,}/g')代码>
文件
段落的结尾
根据:
节点。innerText是一个属性,表示节点及其子体的“渲染”文本内容。作为一个getter,如果用户用光标突出显示元素的内容,然后将其复制到剪贴板,则它近似于用户将获得的文本
元素的内容不会呈现为文本内容,当然也不能突出显示或复制到剪贴板。因此,Node.innerText
不会返回它
有趣的是,document.getElementsByTagName('title')['0'].innerText
确实返回
元素的内容。我读了一些这方面的内容,它是:
如果未呈现此元素,或者用户代理是非CSS用户代理,则返回与此元素上的textContent IDL属性相同的值
此步骤可能会产生令人惊讶的结果,例如,当对未呈现的元素访问innerText属性时,将返回其文本内容,但当对正在呈现的元素访问时,将忽略其所有未呈现的子元素的文本内容
@user9218974,主体下的每一个东西,假设都呈现为一个网页,头部包含的任何内容都只是呈现的信息和资源
因此,在这里,你的代码头中包含了meta
和title
,它们只是页面的信息/元数据。因此,您或多或少可以说您的工作区域是正文
中的内容
现在,如果您想要标题的文本
,您需要使用“document.title”它不会显示在网页控制台.log(getComputedStyle(document.querySelector('title')).display)的内容区域中
,并且不要忘记.innerText
不是W3C标准,而是WHATWG标准。