Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: .:UND3R:. en 3 Mayo 2012, 19:06 pm



Título: Modificar este javascript?
Publicado por: .:UND3R:. en 3 Mayo 2012, 19:06 pm
Hola a todos, buscando por Internet como podía de alguna u otra manera obtener información acerca de un iframe externo (clic, mouse encima, mouse sobre).

Encontré lo siguiente:
Código
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  3. <title>Detect IFrame Clicks</title>
  4.  
  5. <style type="text/css">
  6. #outerdiv2 { width:330px; height:190px; overflow:hidden; position:relative; z-index: 2; }
  7. #inneriframe2 { position:absolute; top:-170px; left:-390px; width:1280px; height:1200px; z-index: 2; }
  8. </style>
  9.  
  10.  
  11. <script type="text/javascript">
  12.  
  13.  
  14. var isOverIFrame = false;
  15.  
  16. function processMouseOut() {
  17. log("IFrame mouse >> OUT << detected.");
  18. isOverIFrame = false;
  19. top.focus();
  20. }
  21. function processMouseOver() {
  22. log("IFrame mouse >> OVER << detected.");
  23. isOverIFrame = true;
  24. }
  25. function processIFrameClick() {
  26. if(isOverIFrame) {
  27. // document.getElementById('modificar').style.display = 'none';
  28. log("IFrame >> CLICK << detected. ");
  29. }
  30. }
  31. function log(message) {
  32. var console = document.getElementById("console");
  33. var text = console.value;
  34. text = text + message + "\n";
  35. console.value = text;
  36. }
  37. function attachOnloadEvent(func, obj) {
  38. if(typeof window.addEventListener != 'undefined') {
  39. window.addEventListener('load', func, false);
  40. } else if (typeof document.addEventListener != 'undefined') {
  41. document.addEventListener('load', func, false);
  42. } else if (typeof window.attachEvent != 'undefined') {
  43. window.attachEvent('onload', func);
  44. } else {
  45. if (typeof window.onload == 'function') {
  46. var oldonload = onload;
  47. window.onload = function() {
  48. oldonload();
  49. func();
  50. };
  51. } else {
  52. window.onload = func;
  53. }
  54. }
  55. }
  56. function init() {
  57. var element = document.getElementsByTagName("iframe");
  58. for (var i=0; i<element.length; i++) {
  59. element[i].onmouseover = processMouseOver;
  60. element[i].onmouseout = processMouseOut;
  61. }
  62. if (typeof window.attachEvent != 'undefined') {
  63. top.attachEvent('onblur', processIFrameClick);
  64. }
  65. else if (typeof window.addEventListener != 'undefined') {
  66. top.addEventListener('blur', processIFrameClick, false);
  67. }
  68. }
  69. attachOnloadEvent(init);
  70. </script>
  71. </head>
  72.  
  73. <div id="outerdiv2"><iframe src="http://www.xtremetop100.com/in.php?site=1132331256" id="inneriframe2" scrolling="no"></iframe></div>
  74.  
  75. <br></br>
  76. <br></br>
  77. <form name="form" id="form" action=""><textarea name="console"
  78. id="console" style="width: 100%; height: 300px;" cols="" rows=""></textarea>
  79. <div id="modificar"><button name="clear" id="clear" type="reset">Clear</button></div>
  80. </form>
  81. </body>
  82. </html>

Al probarlo funciona de maravilla (este me muestra en una caja de texto las acciones detectadas dentro del iframe). Pero me gustaría especificar que fueran capturadas una zona específica dentro del iframe, esta parte sería sólo el botón del iframe (vote for Mu Caos).

¿Como podría hacer esto?
Se lo agradecería considerablemente. Espero no molestar, muchísimas gracias por tomarse el tiempo en leer. Saludos


Título: Re: Modificar este javascript?
Publicado por: Valkyr en 5 Mayo 2012, 19:08 pm
No estoy seguro al 100% pero puedes probarlo para ver si funciona. He visitado la página que está contenida en el iframe (http://www.xtremetop100.com/in.php?site=1132331256) y el botón del que quieres capturar la información tiene un atributo "name", podrías modificar el código javascript para que, en lugar de recuperar el elemento del iframe, te recuperase el elemento input que está en la página. La línea que habría que modificar sería esta:

Código
  1. var element = document.getElementsByTagName("iframe");

habría que modificarla dejándola más o menos así:

Código
  1. var element = document.getElementsByName("submit");

De esta forma recuperarías todos los elementos del DOM que tengan la etiqueta name="submit". En principio de esta forma funcionaría, sino prueba con la función getElementsByTagName. Te dejo una pequeña referencia a los dos métodos.

http://www.w3schools.com/jsref/met_doc_getelementsbyname.asp
http://www.w3schools.com/dom/met_document_getelementsbytagname.asp

Saludos.