Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/03/2017, 05:28
antonio715715
 
Fecha de Ingreso: enero-2016
Mensajes: 21
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: código que funciona en el shell pero no en greasemonkey

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 original
  1. var allTitles, thisTitle;
  2. allTitles = document.evaluate(
  3. "//div[@id='simulacion_tabla']//a", //busca todos los div con valor simulacion_tabla y dentro de estos todos los anchor
  4. document, //esto parece que no se puede afinar más
  5. null,
  6. XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
  7. null);
  8.  
  9. //en allTitles tenemos todos los anchor de la tabla
  10.  
  11. //agregamos un botón para buscar y otro para deseleccionar los checkbox
  12. document.getElementById('simulacion_tabla').insertAdjacentHTML("afterend", "<input type='button' id='botonBuscar' value='BUSCAR' />");
  13. document.getElementById("botonBuscar").addEventListener('click',buscarGoogle,false);
  14. document.getElementById('simulacion_tabla').insertAdjacentHTML("afterend", "<input type='button' id='botonDeseleccionar' value='BORRAR' />");
  15. document.getElementById("botonDeseleccionar").addEventListener('click',deseleccionarCheckbox,false);
  16.  
  17. for (var i = 0; i < allTitles.snapshotLength; i++) {
  18. thisTitle = allTitles.snapshotItem(i);
  19.     document.getElementById('simulacion_tabla').getElementsByClassName('col1')[i].insertAdjacentHTML("beforeend", "<input type='checkbox' id='checkbox"+i+"' />");
  20.    
  21. }
  22.  
  23. //esto agregó un checkbox a cada anchor de la tabla, poniéndoles ids correlativos
  24.  
  25. function buscarGoogle(){
  26.     for (var i = 0; i < allTitles.snapshotLength; i++){
  27.         var url=allTitles.snapshotItem(i).innerHTML;
  28.        
  29.         if(document.getElementById("checkbox"+i).checked){
  30.            
  31.             window.open('http://google.com/search?q='+ url, '_blank');
  32.         }
  33.     }
  34. }
  35.  
  36. function deseleccionarCheckbox(){
  37.     for (var i = 0; i < allTitles.snapshotLength; i++){
  38.         document.getElementById("checkbox"+i).checked=0;
  39.     }
  40.  
  41. }