在Chrome上XPath选择属性失败
XPath selecting attribute fails on Chrome
下面是我用expect.js
运行的一个小测试:
describe('xpath', function () {
it('finds attribute nodes', function () {
$(document.body).append('<string fooBar="bar"><data id="xyz"></data></string>');
var xyz = document.getElementById('xyz');
expect(xyz).not.to.be(null);
var nodes = document.evaluate('../@fooBar', xyz, null, XPathResult.ANY_TYPE, null);
var element = nodes.iterateNext();
expect(element.nodeValue).to.equal('bar');
});
});
我用Testacular在Chrome和Firefox上测试它,当它通过Firefox时,它在Chrome上失败,错误说element
是null
。对我来说真正疯狂的部分是,如果我将fooBar
更改为foo
,它将传递两个系统。Chrome也打破了,如果我使用Foo
而不是foo
。换句话说,当搜索属性中包含大写字母时,Chrome上的XPath查询似乎会中断。这是正常行为吗?我错过什么了吗?或者这是Chrome浏览器的一个bug ?
更新1
我添加了Google的Wicked Good XPath,现在ie也可以工作了,但是Chrome仍然失败。
更新2
如果实际属性有大写,则XPath查询在Chrome上工作,但XPath值都是小写的
是否使用XHTML?如果是这样,XHTML规范规定所有元素和属性名称必须是小写的。
您可能会发现Chrome仅在此基础上对xpath进行评估,而其他浏览器则更符合XML(在任何情况下都有效)。
相关文章:
- 不引人注目地设置属性后函数失败
- Javascript OOP:通过输入将值传递给属性失败
- 单选按钮检查属性在函数 - JavaScript 中失败
- 使用纯 JS 删除 CSS 属性失败
- 由于属性中的非法价值而失败:上下文
- 解析失败,出现: 类型错误: 无法读取未定义的属性“成功”
- React 组件流类型检查中的可选函数属性失败
- 当对服务器的 ajax 请求失败时如何使用 defaults 属性
- 警告:失败的 propType:在“维度选取器”中未指定所需的属性“维度名称”.检查“连接(维度选择器)”的渲染方法
- 在jQuery中创建一个带有属性的HTML元素,在ie7和ie8中失败
- 对象中的函数和对“this”属性的访问 - 失败
- Google App Engine 频道代码在生产中失败,并出现 javascript“无法读取未定义的属性'r
- travis-ci 在 grunt-contrib-imagemin 任务上构建失败(无法准备好未定义的属性“内容”
- Firebase.update失败:第一个参数在属性中包含未定义的参数
- 如果JSON属性名称包含句号,模板将失败
- 使用 DOM 遍历获取属性值失败
- “onclick”属性内的属性访问失败
- 错误跨域iframe尝试访问父窗口中元素的属性时失败
- jQuery,更改复选框上选中的属性失败
- 在Chrome上XPath选择属性失败