Large

InfoCompte3

By vulca Last update Apr 8, 2013 — Installed 726,344 times.

getElementsByClassName

in
Subscribe to getElementsByClassName 4 posts, 2 voices



Vess Scriptwright
FirefoxWindows

Firefox 2.x does not support the getElementsByClassName method, so this script doesn't work there. Any chance you could rewrite it so that it doesn't rely on this method (or implement this method yourself)?

 
vulca Script's Author
FirefoxWindows

I cannot rewrite it without getElementsByClassName, it's used everywhere ^^

But I see these function :
I don't know if it works, please test and tell me ;)
I'll add it

//For FireFox2:
if (!document.getElementsByClassName) {
document.getElementsByClassName = function(clsName) {
var retVal = new Array();
var elements = document.getElementsByTagName("*");
for(var i = 0;i < elements.length;i++){
if(elements[i].className.indexOf(" ") >= 0){
var classes = elements[i].className.split(" ");
for(var j = 0;j < classes.length;j++) {
if(classes[j] == clsName) retVal.push(elements[i]);
}
} else if(elements[i].className == clsName) retVal.push(elements[i]);
} return retVal;
}
}

 
Vess Scriptwright
FirefoxWindows

It should work, but it is not sufficient. The script doesn't use only document.getElementsByClassName; it also uses someOtherStuff.getElementsByClassName. So, you can't just override document.getElementsByClassName - you have to write a function like myGetElementsByClassName (element, className) and replace everywhere in your code someOtherStuff.getElementsByClassName (className) with myGetElementsByClassName (someOtherStuff, className).

 
vulca Script's Author
FirefoxWindows

And why do you keep FF2 ? ^^

edit : the script run 8 times slower with this function...