TypeError:$ it0.hasNext不是函数

时间:2013-08-16 05:38:42

标签: compatibility processing mozilla processing.js

运行一些在chrome中工作正常但在最新版本的Mozilla中失败的画布。我知道这是一个问题,我认为新的处理-1.4.1.js是固定的,以适应这里看到的for循环失败。有谁知道他们是否这样做,为什么会发生这种情况以及如何解决?

编辑:

测试不起作用的代码:

void setup() {
String names[] = {"Alexis", "Thomas", "Antoine"};
   for(String name : names) {
     alert(name);  // doesn't on Firefox 17+, bug?
   }
}

void draw() {
}

1 个答案:

答案 0 :(得分:0)

这是Processing.js的一个问题,以及Firefox中最近的一些更改here

您有两种选择: 解决方案1是破解Processing.js文件,正如alexbbrown在前面提到的链接(一个苛刻和讨厌的解决方案)中所讨论的那样,基本上找到实际的Processing.js文件,用您喜欢的文本编辑器编辑它并更改以下行291-292: / p>

if (obj.iterator instanceof
Function) return obj.iterator();

为:

if (obj.iterator instanceof Function && obj.hasNext instanceof Function)
return obj.iterator();

解决方案2是改变你的代码并且没有可爱的for-each语法(更软,更妥协的解决方案),更换行:

for (String name : names) {
  alert(name);  // doesn't on Firefox 17+, bug?
}

使用通用语法:

for (int i = 0; i < names.length; i++) {
  alert(names[i]);
}
无论你做什么,都可以和你在一起......