Grazie a greasemonkey è possibile personalizzare il funzionamento del FdT, grazie a javascript è infatti possibile accedere al DOM della pagina e modificarne gli attributi.
E' stato creato un Repository per gli script e le estensioni del FdT, in particolare si veda l'apposita board di sviluppo.
Dopo la correzione del bug //Achille97// la redazione di PI ha implementato la visualizzazione dei filmati youtube anche sul FdT, pertanto lo script base è considerato superato. Viene qui riportato a fini didattici:
// ==UserScript== // @name FDT // @namespace http://forumdeitroll.it // @description FDT Enhancer (versione 0.5) // @include http://*.forumdeitroll.it/* // ==/UserScript== // FDT // Copyright (C) 2008 Wakko Warner (http://thewakkowarner.netsons.org/) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. //----------------------------------------------------------------- //---------------------------- OPZIONI ---------------------------- //----------------------------------------------------------------- var ytTimeout = 1000; var colorTimeout = 500; var colori = true; //Se impostato a false mostrerà la parte quotata in grigetto //----------------------------------------------------------------- //------------------------- FINE OPZIONI -------------------------- //----------------------------------------------------------------- var Url = document.URL; //Non usato per ora //Cerchiamo il TD del contenuto var td = document.getElementsByTagName("td"); var tr = document.getElementsByTagName("tr"); var tdcontent = null; var tdaction = null; var i = 0; for (c=0; c<(td.length); c++) { if ((td[c].className == "content")) { tdcontent = td[c]; if (i==1) { break; } i++; } } for (c=0; c<(tr.length); c++) { if ((tr[c].className == "paginazione")) { tdaction = tr[c].firstChild.nextSibling.nextSibling.nextSibling; break; } } if (tdcontent != null) { //Se al passo precedente l'ho trovato... iframe = document.createElement("iframe"); iframe.innerHTML = "Non puo' essere che il tuo FF non supporti gli iFrame :/"; iframe.src = ""; iframe.setAttribute("style","width: 100%; height: 23em; display: none;"); iframe.id = "motorino"; tdcontent.insertBefore(iframe, tdcontent.firstChild); if (tdaction != null) { tdaction.innerHTML = "<a id=\"showHideMotorino\" class=\"textfolder\" href=\"./\" onclick=\"motorino = document.getElementById('motorino'); showHideMotorino = document.getElementById('showHideMotorino'); if (motorino.getAttribute('style').search('block') < 0) {motorino.setAttribute('style','width: 100%; height: 23em; display: block;'); showHideMotorino.innerHTML = 'Nascondi Motorino'; motorino.src='http://fdt.freehostia.com/carburatore/wakaba/wakaba.html';} else {motorino.setAttribute('style','width: 100%; height: 23em; display: none;'); showHideMotorino.innerHTML = 'Mostra Motorino';}; return false;\">Mostra Motorino</a> | <a href='http://embed.mibbit.com/?server=irc.freenode.org&channel=%23%23fdt' target='_blank' class=\"textfolder\">FDT-Chat</a> | " + tdaction.innerHTML; } } //Gestione Youtube var body = document.getElementsByTagName("body")[0]; var ytscript = document.createElement("script"); ytscript.innerHTML="function youtube() {\n var body = document.getElementsByTagName(\"body\")[0];\n var div = document.getElementsByTagName(\"div\");\n for(c=0; c<(div.length); c++) {\n if ((div[c].parentNode.nodeName==\"TD\") && (div[c].innerHTML.match(/\\[yt\\]((.){11})\\[\\/yt\\]/g) != null)) {\n div[c].innerHTML = div[c].innerHTML.replace(/\\[yt\\]((.){11})\\[\\/yt\\]/g, '<object width=\"425\" height=\"350\"><param name=\"movie\" value=\"http://www.youtube.com/v/$1\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.youtube.com/v/$1\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\" height=\"350\"></embed></object>');\n }\n }\n}\n"; body.appendChild(ytscript); setTimeout('youtube()', ytTimeout); //Gestione Colori var colorizescript = document.createElement("script"); var colorstring = ""; if (colori) { colorstring = " level1 = \"#007BDF\";\n level2 = \"#00AF59\";\n level3 = \"#9A00EF\";\n level4 = \"#AF6F00\";\n"; } else { colorstring = " level1 = \"#9F9F9F\";\n level2 = \"#9F9F9F\";\n level3 = \"#9F9F9F\";\n level4 = \"#9F9F9F\";\n"; } colorizescript.innerHTML = "function colorize() {\n" + colorstring + " div = document.getElementsByTagName('div');\n for (c=0; c<(div.length); c++) {\n if ((div[c].parentNode.className == \"funcbarthread\")) { myhtml = div[c].innerHTML;\n myhtmlarray = myhtml.split(\"<br>\");\n myhtml = \"\";\n for (z=0; z<(myhtmlarray.length); z++) {\n if (myhtmlarray[z].substring(0,19)==\"> > > >\") {\n myhtmlarray[z] = \"<span style='color: \" + level4 + \";'>\" + myhtmlarray[z] + \"</span>\";\n } else if (myhtmlarray[z].substring(0,14)==\"> > >\") {\n myhtmlarray[z] = \"<span style='color: \" + level3 + \";'>\" + myhtmlarray[z] + \"</span>\";\n } else if (myhtmlarray[z].substring(0,9)==\"> >\") {\n myhtmlarray[z] = \"<span style='color: \" + level2 + \";'>\" + myhtmlarray[z] + \"</span>\";\n } else if (myhtmlarray[z].substring(0,4)==\">\") {\n myhtmlarray[z] = \"<span style='color: \" + level1 + \";'>\" + myhtmlarray[z] + \"</span>\";\n }\n myhtml = myhtml + myhtmlarray[z] + \"<br>\";\n }\n div[c].innerHTML = myhtml;\n }\n }\n}\n"; body.appendChild(colorizescript); setTimeout('colorize()', colorTimeout);