问题标签 [document.evaluate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1128 浏览

javascript - 提炼 element by using document.evaluate()?

我正在尝试使用document.evaluate()从元素中提取某些子元素<svg>。但是我只是提取<svg>本身就有问题。我可以将所有内容提取到<svg>,但不能再进一步了。例如,这很好用:

这给了我(缩短):

然后我会假设简单

会给我<svg>- 但没有任何效果。已尝试所有响应类型:

我得到invalidIteratorState, nullsingleNodeValue或 a snapshotLengthof 0。

演示-> http://jsfiddle.net/hw79zp7j/

有没有evaluate()我没有听说过的限制,或者我只是做错了?

为了澄清,我的最终目标是能够xAxis <text>在一行代码中提取例如谷歌可视化元素。就像现在一样(参见演示),我必须<svg>使用多个querySelectorAll/getElementsByTagName等来迭代,这不是很可读,维护友好或优雅。xpath从谷歌开发者工具中获取并在一行中重用它会很好。

0 投票
0 回答
549 浏览

javascript - EDGE 浏览器中的 Document.evaluate API 行为不一致

评估少数 XPATH 表达式会导致 DOMException(代码 12 ---> SYNTAX_ERROR)

以下是导致此问题的几个 XPATH 表达式:

  1. 前缀:_element(元素名称以_开头)
  2. 祖先::元素
  3. element[@_attr='value'](属性名以_开头)

将很快更新更多的模式。

用于评估 XPATH 的 JS:

此问题仅出现在 EDGE 浏览器中。任何人都可以与我分享 EDGE 浏览器文档链接(如 MDN),建议支持哪些 APIS。

0 投票
1 回答
1210 浏览

javascript - 使用 XPath 在 DOM 中搜索多个相同字符串

我正在编写一个 Chrome 扩展程序,它将搜索 DOM 并突出显示页面上的所有电子邮件地址。我发现这是在页面上查找符号,但它只在有一个电子邮件地址时正确返回,当找到多个地址时它会中断。

如果找到多个返回倍数的正确方法是什么?

0 投票
0 回答
96 浏览

javascript - 从 Gmail 中的字段获取电子邮件地址

当用户在 Gmail 中打开电子邮件时,我需要从电子邮件字段中获取电子邮件地址。

这是我的 API 的输入之一,但我无法定位该字段,因为 Gmail 具有复杂的页面结构,

我尝试过,document.evaluate()但它返回巨大的XPathResult对象,我不知道电子邮件存储在哪里。

0 投票
0 回答
94 浏览

javascript - document.evaluate 在 google chrome 中工作,但不在 Firefox 中

以下代码在 google chrome 中运行良好,但在 Firefox 中它返回一个空数组。

0 投票
0 回答
122 浏览

javascript - xpath 1.0 列出指向当前节点的节点(链接计数)

我想做什么:

我想找到正确的 xpath 来计算(或列出)引用活动节点的链接。

我的上下文是带有以下分离的 dom 树的 javascript,用于查询 xpath,document.evaluate 给出了一个特定的入口点。

作为示例,我们将//*[@id="n11"]视为入口点或活动节点(第二个 document.evaluate 参数)

这里是分离的 dom 树:

我已经尝试了几件事,但都没有给我预期的结果:

  • 没有链接的节点:/node/*[not(@id = /link/*/source | /link/*/target)]

  • 具有一个链接的节点:/node/*[@id = /link/*[not(target = following::source | following::target | preceding::source | preceding::target)]/target] | /node/*[@id = /link/*[not(source = following::source | following::target | preceding::source | preceding::target)]/source]

  • 具有多个链接的节点/node/*[@id = /link/*[target = following::source | following::target | preceding::source | preceding::target]/target] | /node/*[@id = /link/*[source = following::source | following::target | preceding::source | preceding::target]/source]

但是这些论文没有给我当前节点的链接号。

这不起作用:count(./[@id = /link/*[target | source]])

这不是更好:count(/link/*[current()/@id = target | source]])因为当前存在于 xslt 上下文中,而不是仅 xpath 上下文中。

有 xpath 方式吗?

我在想的另外两种方法是:重新设计我的 dom 树以使其更像这样:

但是对于第一个 dom 树,我可以将任何 json 转换为 dom 并使用 xpath 查询它,在第二个 dom 树中,我更依赖于数据结构。

我看到的另一种方法是像这样(在第一个 dom 树上)执行递归 xpath: count(/link/*[target | source = {concat('"',@id,'"')}]]) 并在 javascript 中寻找嵌套的 xpath,评估它们,在父级中替换它们并评估父级 xpath。它可以在这里解决问题,但是当嵌套的 xpath 返回节点集而不是字符串时会更难处理。

最后,为什么我要这样做?对于这个项目:https ://github.com/1twitif/social-viz 我想给想要高级配置的用户提供 xpath 权力,但不给他们 javascript 的全部权力来过滤那里的数据以避免 xss 评估用户不受信任的 js脚本。

0 投票
1 回答
785 浏览

javascript - XPATH 中的转义括号(document.evaluate)

我正在使用以下代码来遍历所有包含电话号码的 DOM 元素。当正在搜索的电话号码字符串中没有任何括号时,此代码有效,但我认为括号弄乱了 XPATH contains() 函数。有没有人知道如何转义这些括号以使代码再次工作?

谢谢!

0 投票
1 回答
82 浏览

graph - Microsoft Academic Graph:获取论文的所有属性

如何检索纸质实体的所有属性? PS:有一个名为 attributes 的“可选”字段,您可以在其中指定要在响应中包含哪些属性,但删除此选项将不会返回任何内容。如果您手动放置所有属性,它似乎无法正常工作。其中一些根本没有被检索到。最好的

0 投票
1 回答
168 浏览

xpath - 为什么 XPath exaluate 给 /html/body 的 snapshotLength = 1 和 /html/body/div[3]/div[3]/div/div[6]/div[2]/div/div/div 的 0?

你能告诉我为什么 XPath exaluate 给出

和 0 为

较长的 XPath 是真实的,由 Firepath 为该页面上的对象计算

http://srv1.yogh.io/#mine:height:0

我在 Greasemonkey 中运行以下脚本。

我希望代码在网页上突出显示 XPathed DIV 对象并通过 console.log 返回:

用于后处理以通过 .innerText 或 .innerHTML 读取字符串 2083236893

在 GM 或 Fiddle 中工作的任何想法或任何工作脚本演示?

0 投票
2 回答
736 浏览

javascript - 通过document.evaluate获取nextsibling的文本值

我有以下表格数据要在我的 HTML 中遍历:

我想输出文本“vii, 201 pages ; 23. cm”。与 document.evaluate 但我遗漏了一些东西。问题是选择器应该是具有类属性值“SmallColHeading”的 td 并且具有(包含)格式的文本节点/值。

我在 nextSibling 之后特别尝试了各种组合,例如删除 innerHTML(我得到未定义)或用 textContent 替换它(我得到无法读取属性'textContent')。我正在努力在这个 HTML 上通过 javascript 遍历 nextSibling,因为 tr 甚至没有 id 值,而这就是我们在系统中拥有的所有东西。提前致谢!