在我正在进行的Firefox附加组件的内容脚本中,我有一个名为element
的变量,其中包含对通用DOM元素的引用。该元素可能包含子元素或孙元素,而子元素或孙子元素可能包含在呈现的网页上可见的文本节点。
我的目标是提取此DOM element
中包含的所有可见文本。 Internet Explorer具有innerText方法,它正是我所需要的,但不幸的是,这不是标准方法,并且在IE之外不起作用/存在。
Firefox附带了一个类似的textContent属性,可以模仿innerText
,但无法过滤掉<script>
和<style>
等标记中包含的不可见文本。
寻找一个jQuery解决方案,我相信我已经找到了一个;我来了:
text = $(element).filter(":visible").text();
此语句正确提取element
所有子项中包含的文本,但不会过滤掉<script>
标记中的不可见文本。谷歌搜索,我找不到任何问题的参考解决方案。
答案 0 :(得分:0)
当你node.textContent
对node.nodeType
进行测试时。
如果nodeType ==某个数字,那么它的visibl。
数字在这里:
让我们知道哪个nodeType适用于可见文本我们都会学习一些东西
答案 1 :(得分:0)
这似乎有效。到目前为止,我只进行了一次快速测试。如果除了<script>
和<style>
标记之外还有其他问题(例如影响可见性的CSS规则等),您可能需要摆弄它:
function getText(node){
if(!node )return;
var cloned=node.cloneNode(true);
var removeList=Array.from(cloned.querySelectorAll("script,style")||[]);
removeList.forEach(node=>node.parentNode.removeChild(node));
return cloned.textContent;
}