问题标签 [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 投票
2 回答
596 浏览

javascript - 将用户脚本从 Firefox/Chrome 转换为 Internet Explorer 9?

我是一名非计算机科学或编程专业的学生,​​但我一直在为我的父母寻找一个脚本,他们是外国人并且不懂互联网术语。

我在 userscripts.org 上找到了下面的脚本(全部归功于作者),它就像一个魅力。但是,我的父母太固执,无法从 IE9 切换到 Chrome 或 Firefox,所以我下载了 IE7Pro 并在那里安装了脚本。

这里的问题是安装在 IE9 上的用户脚本似乎根本不起作用,我试图找出原因。Chrome/Firefox 与 Internet Explorer 的 javascript 是否存在基本差异?

我该如何解决这些问题以使其在 IE 中工作?我只上过入门的 C 编程课程,在这个领域几乎没有经验,所以如果有人能简单地向我解释一下,那就太好了。

这是供参考的代码,如果有人可以指出它在哪里/为什么不起作用,那将是很大的帮助。它不会太长,它会为我节省无数小时来学习一些我并不真正需要学习的东西。太感谢了。

0 投票
1 回答
1964 浏览

javascript - document.evaluate 使用 iterateNext 返回 null

我一直在关注 w3 学校关于使用 xpath 浏览我的 xml 文档的示例,但是我从 iterateNext() 返回的所有内容都是空的。下面是我的 blog.xml 文件。

这是我的 html 脚本,while 语句永远不会到达,因为结果总是返回 null,这可能是我忽略的东西,但我认为如果它在 w3 学校它应该真的有效。

0 投票
1 回答
417 浏览

typescript - 在 TypeScript 中使用 document.evaluate

如何document.evaluate在 TypeScript 中使用?它不是该Document类型的方法,因此当我尝试使用它时,TypeScript 会生成错误并且不允许我编译代码。

有什么方法可以将它添加到编译错误的定义中Document或忽略编译错误?

0 投票
0 回答
80 浏览

javascript - Is it possible to get an xpath element using javascript, without using document.evaluate()?

The reason I wish to do this is because document.evaluate() does not work in IE. Is there an alternative?

0 投票
1 回答
1554 浏览

android - document.evaluate 不返回正确的 TextNodes XPath

我正在 WebView 中为 Android 创建“荧光笔”。我通过如下函数获取 HTML 中选定范围的 XPath 表达式

/HTML[1]/BODY[1]/DIV[1]/DIV[3]/DIV[1]/DIV[1]/text()[5]

现在我正在通过 javascript 中的这个函数来评估上面的 XPath 表达式

但我得到了 startNode 'null'。

但是,这是有趣的一点:

如果我使用相同的函数评估这个'/HTML[1]/BODY[1]/DIV[1]/DIV[3]/DIV[1]/DIV[1]' XPath 表达式,它会给出正确的节点,即'div'。

两个 XPath 之间的区别在于前面的 XPath 包含一个 textNode,而后面的只有 div。

但同样的事情在桌面浏览器上运行良好。

编辑的 示例 HTML

获取 XPath:

生成 XPath 的函数:

我不是在使用 XML,而是在 webview 中使用 HTML。

我尝试使用 Rangy 序列化和反序列化,但 Rangy“序列化”可以正常工作,但“反序列化”不能正常工作。

大家有什么想法,怎么回事?

更新

终于找到了问题的根本原因(还没有解决方案:()

` android webview 中到底发生了什么。-->> 不知何故,android webview 正在改变加载的 HTML 页面的 DOM 结构。即使 DIV 不包含任何 TEXTNODES,在从 DIV 中选择文本时,我也会为该 DIV 中的每一行获取 TEXTNODE。例如,对于桌面浏览器中的相同 HTML 页面和相同的文本选择,从 webview 获取的 XPath 与桌面浏览器中给出的 XPath 完全不同



0 投票
1 回答
4185 浏览

javascript - 在某些页面\站点上,document.evaluate 总是在 singleNodeValue 中返回 null

页面:http ://h4z.it/View/-20100729_designtea.jpg

在控制台中执行的代码: document.evaluate("//img",document,null,9,null).singleNodeValue

或者

document.evaluate("//a",document,null,9,null).singleNodeValue

甚至

document.evaluate("//html",document,null,9,null).singleNodeValue

结果(用 Chrome 和 Firefox 测试):null

我认为该页面覆盖了 document.evaluate 但它显示

文档.评估

函数评估(){[本机代码]}

delete document.evaluate没有帮助,那么还有什么可以打破的document.evaluate呢?

0 投票
1 回答
598 浏览

javascript - JS:document.evaluate(".//html"... 和 document.evaluate("//html"...?

点 ( .) 重要document.evaluate吗?我测试了它似乎没有做任何事情

mozilla 教程在示例中使用它https://developer.mozilla.org/en-US/docs/Web/API/document.evaluate

0 投票
1 回答
860 浏览

javascript - 总是从 iterateNext() 为 document.evaluate 获取空值

在脚本中使用下面的代码时,e 总是为 null

但是在 Chrome 控制台中使用这个命令,e 可以得到正确的值,为什么会发生这种情况?

这是js文件和html文件的完整代码

测试.js

html

0 投票
1 回答
235 浏览

javascript - 聚合物破坏 document.evaluate (xpath)

我在 Linux 上使用 Chrome 34.0.1847.116,如果只是加载 polymer.js,则 document.evaluate 不再有效,并返回奇怪的错误:

“错误:无法在'文档'上执行'评估':提供的上下文节点为空。在错误(本机)

这是一个例子

http://jsbin.com/jadir/2/edit?html,控制台,输出

除非我听到其他消息,否则我会创建一个问题,但在这里发布以防有人有一些见解。

0 投票
2 回答
286 浏览

javascript - 仅通过 xpath 更改选择框的值

我目前正在使用 robotsium 在 android web 视图中记录大量操作。robotsium 中有一个已知错误,它不允许您更改选择框的值。为了在测试运行时解决这个问题,我正在创建另一个 javascript 注入来更改它。它适用于名称和 ID,但它还需要能够使用 xpath,以防名称或 ID 不可用。

目前,我可以使用选择框的名称和 ID 执行此操作:

selectBox = document.getElementById(identifyingValue);

或者

selectBox = document.getElementByName(identifyingValue);

在此之后,我可以创建一个方法来将选择框的值更改为我想要的值。问题是有时我无法获取选择框的 ID 或名称,并且没有类似的方法可以通过 Xpath 执行此操作,即:

selectBox = document.getElementByXpath(identifyingValue);

我的代码目前如下所示:

到目前为止,您可以看到我正在尝试首先使用 id 和 name,并将 xpath 作为最后的手段。

我可以通过它的 Xpath 选择一个元素,然后更改它的值或执行类似的操作。任何帮助或输入将不胜感激。