问题标签 [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.
javascript - 提炼
我正在尝试使用document.evaluate()
从元素中提取某些子元素<svg>
。但是我只是提取<svg>
本身就有问题。我可以将所有内容提取到<svg>
,但不能再进一步了。例如,这很好用:
这给了我(缩短):
然后我会假设简单
会给我<svg>
- 但没有任何效果。已尝试所有响应类型:
我得到invalidIteratorState
, nullsingleNodeValue
或 a snapshotLength
of 0。
演示-> http://jsfiddle.net/hw79zp7j/
有没有evaluate()
我没有听说过的限制,或者我只是做错了?
为了澄清,我的最终目标是能够xAxis
<text>
在一行代码中提取例如谷歌可视化元素。就像现在一样(参见演示),我必须<svg>
使用多个querySelectorAll
/getElementsByTagName
等来迭代,这不是很可读,维护友好或优雅。xpath
从谷歌开发者工具中获取并在一行中重用它会很好。
javascript - EDGE 浏览器中的 Document.evaluate API 行为不一致
评估少数 XPATH 表达式会导致 DOMException(代码 12 ---> SYNTAX_ERROR)
以下是导致此问题的几个 XPATH 表达式:
- 前缀:_element(元素名称以_开头)
- 祖先::元素
- element[@_attr='value'](属性名以_开头)
将很快更新更多的模式。
用于评估 XPATH 的 JS:
此问题仅出现在 EDGE 浏览器中。任何人都可以与我分享 EDGE 浏览器文档链接(如 MDN),建议支持哪些 APIS。
javascript - 使用 XPath 在 DOM 中搜索多个相同字符串
我正在编写一个 Chrome 扩展程序,它将搜索 DOM 并突出显示页面上的所有电子邮件地址。我发现这是在页面上查找符号,但它只在有一个电子邮件地址时正确返回,当找到多个地址时它会中断。
如果找到多个返回倍数的正确方法是什么?
javascript - 从 Gmail 中的字段获取电子邮件地址
当用户在 Gmail 中打开电子邮件时,我需要从电子邮件字段中获取电子邮件地址。
这是我的 API 的输入之一,但我无法定位该字段,因为 Gmail 具有复杂的页面结构,
我尝试过,document.evaluate()
但它返回巨大的XPathResult
对象,我不知道电子邮件存储在哪里。
javascript - document.evaluate 在 google chrome 中工作,但不在 Firefox 中
以下代码在 google chrome 中运行良好,但在 Firefox 中它返回一个空数组。
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脚本。
javascript - XPATH 中的转义括号(document.evaluate)
我正在使用以下代码来遍历所有包含电话号码的 DOM 元素。当正在搜索的电话号码字符串中没有任何括号时,此代码有效,但我认为括号弄乱了 XPATH contains() 函数。有没有人知道如何转义这些括号以使代码再次工作?
谢谢!
graph - Microsoft Academic Graph:获取论文的所有属性
如何检索纸质实体的所有属性? PS:有一个名为 attributes 的“可选”字段,您可以在其中指定要在响应中包含哪些属性,但删除此选项将不会返回任何内容。如果您手动放置所有属性,它似乎无法正常工作。其中一些根本没有被检索到。最好的
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 中工作的任何想法或任何工作脚本演示?
javascript - 通过document.evaluate获取nextsibling的文本值
我有以下表格数据要在我的 HTML 中遍历:
我想输出文本“vii, 201 pages ; 23. cm”。与 document.evaluate 但我遗漏了一些东西。问题是选择器应该是具有类属性值“SmallColHeading”的 td 并且具有(包含)格式的文本节点/值。
我在 nextSibling 之后特别尝试了各种组合,例如删除 innerHTML(我得到未定义)或用 textContent 替换它(我得到无法读取属性'textContent')。我正在努力在这个 HTML 上通过 javascript 遍历 nextSibling,因为 tr 甚至没有 id 值,而这就是我们在系统中拥有的所有东西。提前致谢!