Ciao a tutti
Sto creando un'estensione per firefox ma ho riscontrato un problema.
Questa estensione, aggunge una voce al menu nella barra degli strumenti che, se cliccata, dovrebbe aggiungere una tabella come ultimo oggetto del primo iframe che trova (naturalmente una volta che avrò risolto, farò un controllo per verificare che funzioni solo sul sito che miserve)
Il mio codice funziona in locale e funziona anche se lo aggiungo ad una pagina qualsiasi di qualsiasi sito che abbia un iframe con firebug ma non funziona se creo l'estensione e poi richiamo la funzione.
Penso che il problema stia nella getElementsByTagName che non riconosce gli iframe ma non capisco perchè.
Lavoro solamente con FF3, non ho provato su FF2.
Qualcuno ha incontrato il mio stesso problema?
function mostraskill()
{
var skills = new Array();
var nski = 0;
var mediaAC = 0;
var mediaAL = 0;
var fi = getFrame();
var framePlayer = fi.contentWindow.document;
var immagini = framePlayer.images;
for(var i = 0; i < immagini.length; i++)
{
if(endsWith(immagini[i].src,"a.gif"))
{
skills[nski] = parseInt(immagini[i].alt);
nski = nski + 1;
}
}
var tool = document.createElement('table');
var tbodyTool = document.createElement('tbody');
var riga = document.createElement('tr');
var ruoli = document.createElement('td');
var stili = document.createElement('td');
stili.align="left";
stili.style.backgroundColor="dodgerblue";
riga.appendChild(ruoli);
riga.appendChild(stili);
tbodyTool.appendChild(riga);
tool.appendChild(tbodyTool);
var table = document.createElement('table');
var tbody = document.createElement('tbody');
table.appendChild(tbody);
var rowOff = document.createElement('tr');
creaCella("A L:"+media(new Array(skills[0], skills[1], skills[3], skills[5], skills[7], skills[9])),rowOff);
creaCella("A C:"+media(new Array(skills[0], skills[1], skills[5], skills[6], skills[7], skills[8], skills[9], skills[12])),rowOff);
creaCella("",rowOff);
var rowOff2 = document.createElement('tr');
creaCella("",rowOff2);
creaCella("T C:"+media(new Array(skills[1], skills[3], skills[5], skills[7], skills[9])),rowOff2);
creaCella("T L:"+media(new Array(skills[0], skills[3], skills[7], skills[9])),rowOff2);
var rowMid = document.createElement('tr');
creaCella("C L:"+media(new Array(skills[0], skills[1], skills[3], skills[16], skills[5], skills[9])),rowMid);
creaCella("C C:"+media(new Array(skills[0], skills[1], skills[2], skills[3], skills[4], skills[5], skills[11], skills[12], skills[14])),rowMid);
creaCella("",rowMid);
var rowMid2 = document.createElement('tr');
creaCella("",rowMid2);
creaCella("M C:"+media(new Array(skills[2], skills[3], skills[4], skills[10], skills[12], skills[14])),rowMid2);
creaCella("M L:"+media(new Array(skills[0], skills[3], skills[4], skills[5])),rowMid2);
var rowDef = document.createElement('tr');
creaCella("D L:"+media(new Array(skills[0], skills[4], skills[10], skills[12])),rowDef);
creaCella("D C:"+media(new Array(skills[0], skills[4], skills[6], skills[8], skills[10], skills[12])),rowDef);
creaCella("",rowDef);
var rowDef2 = document.createElement('tr');
creaCella("",rowDef2);
creaCella("L:"+media(new Array(skills[4], skills[6], skills[12], skills[14], skills[16])),rowDef2);
creaCella("",rowDef2);
var rowPor = document.createElement('tr');
creaCella("",rowPor);
creaCella("P:"+media(new Array(skills[0], skills[1], skills[4], skills[6], skills[12])),rowPor);
creaCella("",rowPor);
rowOff.style.backgroundColor="darkgreen";
rowOff2.style.backgroundColor="green";
rowMid.style.backgroundColor="darkgreen";
rowMid2.style.backgroundColor="green";
rowDef.style.backgroundColor="darkgreen";
rowDef2.style.backgroundColor="green";
rowPor.style.backgroundColor="darkgreen";
tbody.appendChild(rowOff);
tbody.appendChild(rowOff2);
tbody.appendChild(rowMid);
tbody.appendChild(rowMid2);
tbody.appendChild(rowDef);
tbody.appendChild(rowDef2);
tbody.appendChild(rowPor);
ruoli.appendChild(table);
creaDivStili("Fasce A C:"+media(new Array(skills[6], skills[8])),stili);
creaDivStili("Fasce DMC L:"+media(new Array(skills[3], skills[7], skills[5], skills[9], skills[2], skills[16])),stili);
creaDivStili("Lanci A CL:"+media(new Array(skills[0], skills[2], skills[6])),stili);
creaDivStili("Lanci LDM CL:"+media(new Array(skills[7], skills[3])),stili);
creaDivStili("Lanci P:"+media(new Array(skills[3], skills[3])),stili);
creaDivStili("Pressing TUTTI:"+media(new Array(skills[2], skills[4], skills[16])),stili);
creaDivStili("Contropiede AT:"+media(new Array(skills[9], skills[0], skills[3], skills[7], skills[2], skills[14], skills[16])),stili);
creaDivStili("Contropiede C:"+media(new Array(skills[3], skills[7], skills[9], skills[16])),stili);
creaDivStili("Contropiede P:"+media(new Array(skills[3], skills[3])),stili);
creaDivStili("Prima MCT:"+media(new Array(skills[7], skills[3], skills[5], skills[9], skills[2])),stili);
creaDivStili("Possesso DMC:"+media(new Array(skills[9], skills[3], skills[5])),stili);
creaDivStili("Fuorigioco LD:"+media(new Array(skills[0], skills[2], skills[14], skills[16], skills[12])),stili);
creaDivStili("Fuorigioco P:"+media(new Array(skills[4], skills[5], skills[14])),stili);
creaDivStili("Catenaccio LDM:"+media(new Array(skills[0], skills[4])),stili);
creaDivStili("Catenaccio P:"+media(new Array(skills[6], skills[7], skills[10])),stili);
var scripts = framePlayer.getElementsByTagName("script");
var ultimoScript = scripts[scripts.length-2]
ultimoScript.parentNode.insertBefore(tool,ultimoScript);
}
function creaDivStili(testo,cella)
{
var div = document.createElement('div');
div.innerHTML = "<font size=1>"+testo+"</font>";
cella.appendChild(div)
return div;
}
function creaCellaStili(testo,row)
{
var cell = document.createElement('td');
cell.innerHTML = "<font size=1>"+testo+"</font>";
row.appendChild(cell)
return cell;
}
function creaCella(testo,row)
{
var cell = document.createElement('td');
cell.innerHTML = "<font size=2 color=white>"+testo+"</font>";
row.appendChild(cell)
return cell;
}
function media(ski)
{
var somma = 0;
for(var i = 0; i < ski.length; i++)
{
somma += ski[i];
}
var med = (somma/ski.length).toFixed(1);
var font = "#FF0000";
if (med < 80)
{
if (med < 70)
{
if (med < 60)
{
font = "#FF0000";
}
else
{
font = "#FFAA00";
}
}
else
{
font = "#00DD00";
}
}
else
{
font = "#0000FF";
}
var mediaColorata = "<font color=" + font + "> " + med + " </font>";
return mediaColorata;
}
function getFrame()
{
var fi = document.getElementsByTagName("iframe");
return fi[0];
}
function endsWith(testString, endingString)
{
if(endingString.length > testString.length) return false;
return testString.indexOf(endingString) == (testString.length-endingString.length);
}
Grazie anticipatamente