Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检索HTMLDOM中的所有文本,但不包括脚本和样式标记?_Javascript_Dom_Xpath - Fatal编程技术网

Javascript 如何检索HTMLDOM中的所有文本,但不包括脚本和样式标记?

Javascript 如何检索HTMLDOM中的所有文本,但不包括脚本和样式标记?,javascript,dom,xpath,Javascript,Dom,Xpath,我知道如何从DOM中快速提取文本节点: document.evaluate('//text()', document, null, XPathResult.ANY_TYPE, null) 但是,有没有一种简单的方法可以从脚本、样式或其他未显示给用户的标记中排除文本 比如: '//text()[ parent.name not in ("SCRIPT", "STYLE") ]' 谢谢, Mike除了Nick Jones的正确答案之外,对于更复杂的排除,您应该使用XPath节点集排除表达式: $

我知道如何从DOM中快速提取文本节点:

document.evaluate('//text()', document, null, XPathResult.ANY_TYPE, null)
但是,有没有一种简单的方法可以从脚本、样式或其他未显示给用户的标记中排除文本

比如:

'//text()[ parent.name not in ("SCRIPT", "STYLE") ]'
谢谢,
Mike

除了Nick Jones的正确答案之外,对于更复杂的排除,您应该使用XPath节点集排除表达式:

$ns1[not(count(.|$ns2)=count($ns2))]
在这种情况下:

//*[not(count(.|//script|/*/*/style)=count(//script|/*/*/style))]/text()
//*[not(count(.|//script|/*/*/style)=count(//script|/*/*/style))]/text()