【发布时间】:2017-07-05 00:28:23
【问题描述】:
我在 Capybara 功能测试中遇到 JavaScript 错误。 但是普通的chrome浏览器不会发生错误。 JavaScript 代码如下。
document.addEventListener('DOMContentLoaded', function(){
var enable = function(){
document.querySelectorAll('input').forEach(function(e){ e.disabled = false });
}
/* do something ..*/
enable();
}
错误消息是TypeError: undefined is not a constructor (evaluating 'form.querySelectorAll('input').forEach(function(e){ e.disabled = false })')。
我认为这与forEach返回未定义有关。
【问题讨论】:
-
不,
forEach确实并且应该返回 undefined - 并非所有NodeList的实现(querySelectorAll 返回的)都有forEach方法 - 请参阅 developer.mozilla.org/en/docs/Web/API/… -
我认为 PhantomJS 与 Chrome 几乎相同。但我知道它不正确。谢谢!
-
类似
[].forEach.call(form.querySelectorAll('input'), function(e){ e.disabled = false }); -
谢谢。我会试试的!
标签: javascript ruby-on-rails ruby phantomjs capybara