javascript - 这两个 XPath 表达式有什么区别?

标签 javascript html xpath

有两个 XPath 表达式:

//LI/A[normalize-space()="fullscreen"]
//LI/A["fullscreen"]

据我了解,normalize-space() 用于 trim 字符串,如 documentation 中所述。 。那么这两个表达式应该具有相同的含义吗?

但是可以评估第一个以将元素定位在 this web page 中作者:

document.evaluate('//LI/A[normalize-space()="fullscreen"]', document).iterateNext();

,而第二个将定位不同的元素。

它们有什么区别?

最佳答案

第二个表达式实际上没有多大意义。您设置的过滤 a 元素的唯一条件是“fullscreen”字符串,该字符串的计算结果始终为 true。换句话说,//LI/A["fullscreen"] 相当于 //LI/A

您可能想根据全屏检查元素的字符串值:

//LI/A[. = "fullscreen"]

还需要注意的是,当不带参数调用 normalize-space() 时,它会自动使用当前节点的字符串值作为参数 。元素的节点字符串值为 all text nodes within the element concatenated .

关于javascript - 这两个 XPath 表达式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43536334/

相关文章:

javascript - 这个 xpath 表达式有什么问题?

php - 如何使用 PHP 从 HTML 文档中仅提取某些标签?

javascript - 如何通过 javascript 从 silverlight 媒体播放器 (player.xap) 获取播放状态?

javascript - 根据屏幕尺寸折叠 div 元素

javascript - 如何正确使用路由器 socket

javascript - 单击其他地方时关闭汉堡菜单

javascript - 如何制作 javascript 下载文件?

javascript - 使用 jCrop api 显示所选裁剪区域的坐标

javascript - 具有水平和垂直滚动主体的固定表头

java - 当我使用 Selenium IDE 时,WebDriver 无法找到 WebElement,其中相同的 css 工作正常