Hasta que los navegadores no integren getElementsByClassName como parte del core de Javascript tendremos que estar atentos a actualizaciones y versiones de esta función.
if(!document.getElementsByClassName)
{
Object.prototype.getElementsByClassName = function(searchClasses, tag) {
var classElements = new Array();
tag = tag || '*';
searchClasses = searchClasses.split(' ');
tag = tag.split(' ');
for(var i = 0, classLength = searchClasses.length; i < classLength; i++)
{
var searchClass = searchClasses[i];
if(document.evaluate)
{
var result = new Array();
for(var a = 0, tagLength = tag.length; a < tagLength; a++)
{
result.push(document.evaluate("//" + tag[a] + "[@class='" + searchClass + "']", this, null, XPathResult.ANY_TYPE, null));
var element = '';
while(element = result[a].iterateNext())
{
classElements.push(element);
}
}
}
else
{
for(var a = 0, tagLength = tag.length; a < tagLength; a++)
{
var els = this.getElementsByTagName(tag[a]);
var pattern = new RegExp("(^|\s)" + searchClass + "(\s|$)");
for(var j = 0, elsLen = els.length; j < elsLen; j++)
{
if(pattern.test(els[j].className))
{
classElements.push(els[j]);
}
}
}
}
}
return classElements;
};
}
Como podemos ver, intenta lanzar la busqueda mediante XPath en caso de que esté disponible, y si no es posible lanza la busqueda por clases mediante expresiones regulares, no implica que sea más rápida, a las estadísticas me remito, pero es completamente funcional.
1 comentarios, 1 referencias
+
#