http://stackoverflow.com/questions/17378199/uncaught-referenceerror-function-is-not-defined-with-onclick
ahí está principalmente la respuesta a mi problema, como no sé si puedo pegar ese link y como es en inglés haré un pequeño resumen:
Nunca uses onclick() en un userscript ya que funciona algo así como en un "mundo aislado" por lo que no puede ver las funciones que hay fuera.
En mi caso desde los botones no puede ver las funciones.
Es mejor usar addEventListener.
Aquí va el código que ahora sí funciona en greasemonkey:
Código Javascript
:
Ver originalvar allTitles, thisTitle;
allTitles = document.evaluate(
"//div[@id='simulacion_tabla']//a", //busca todos los div con valor simulacion_tabla y dentro de estos todos los anchor
document, //esto parece que no se puede afinar más
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
//en allTitles tenemos todos los anchor de la tabla
//agregamos un botón para buscar y otro para deseleccionar los checkbox
document.getElementById('simulacion_tabla').insertAdjacentHTML("afterend", "<input type='button' id='botonBuscar' value='BUSCAR' />");
document.getElementById("botonBuscar").addEventListener('click',buscarGoogle,false);
document.getElementById('simulacion_tabla').insertAdjacentHTML("afterend", "<input type='button' id='botonDeseleccionar' value='BORRAR' />");
document.getElementById("botonDeseleccionar").addEventListener('click',deseleccionarCheckbox,false);
for (var i = 0; i < allTitles.snapshotLength; i++) {
thisTitle = allTitles.snapshotItem(i);
document.getElementById('simulacion_tabla').getElementsByClassName('col1')[i].insertAdjacentHTML("beforeend", "<input type='checkbox' id='checkbox"+i+"' />");
}
//esto agregó un checkbox a cada anchor de la tabla, poniéndoles ids correlativos
function buscarGoogle(){
for (var i = 0; i < allTitles.snapshotLength; i++){
var url=allTitles.snapshotItem(i).innerHTML;
if(document.getElementById("checkbox"+i).checked){
window.open('http://google.com/search?q='+ url, '_blank');
}
}
}
function deseleccionarCheckbox(){
for (var i = 0; i < allTitles.snapshotLength; i++){
document.getElementById("checkbox"+i).checked=0;
}
}