Я пытаюсь определить функцию для объекта NodeList. Это код:
if (!NodeList.prototype.filter){
NodeList.prototype.filter = function(fun /*, thisp*/){
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
var res = new Array();
var thisp = arguments[1];
for (var i = 0; i < len; i++){
if (i in this){
var val = this[i]; // in case fun mutates this
if (fun.call(thisp, val, i, this))
res.push(val);
}
}
return res;
};
}
Это работает в Chrome, но не в Firefox. Firebug говорит, что «current_node.childNodes.filter не является функцией», когда я вызываю функцию:
nodes = current_node.childNodes.filter(filterByClass);
Странно то, что этот код:
if(typeof NodeList.prototype.filter == 'function')
alert(NodeList.prototype.filter);
отображает код функции в обоих браузерах.
Он используется в HTML и включается так:
<script type="text/javascript" src="textselection.js"></script>
EDIT:
Версия Firefox - 10.0.2 и S.O. Ubuntu 11.04
EDIT2:
Я забыл один важный фактор ... он используется в iframe