2010-06-30 10 views
7

Imaginemos que tengo algo como esto:Cómo obtener el elemento iframe primario de la página interna sin conocer la identificación?

<html> 
... 
    <div> 
     <iframe src="test.html" hash="r4d5f7"></iframe> 
     <iframe src="test.html" hash="8f7x97"></iframe> 
     <iframe src="test.html" hash="gg4v5e"></iframe> 
     <iframe src="test.html" hash="e54f87"></iframe> 
    </div> 
... 
</html> 

test.html es la página vacía, a medida hash atributo siempre tiene un valor diferente, ambas páginas están en el mismo dominio por razones de seguridad, el número y orden de iframe los elementos son aleatorios.

Mi pregunta es: ¿hay alguna manera de obtener desde la página interna (test.html) utilizando Javascript su elemento iframe propiamente dicho? Digamos que estoy en la página del tercer iframe y necesito llegar a su elemento iframe y al valor hash de alerta() (en este caso, "gg4v5e").

Para ser más específico. Si está familiarizado con Firebug de Firefox, visualiza esta situación como esta:

<html> 
... 
    <div> 
     <iframe src="test.html" hash="r4d5f7"> 
      <html> 
       ... 
      </html> 
     </iframe> 
     <iframe src="test.html" hash="8f7x97"> 
      <html> 
       ... 
      </html> 
     </iframe> 
     <iframe src="test.html" hash="gg4v5e"> 
      <html> 
       ... 
      </html> 
     </iframe> 
     <iframe src="test.html" hash="e54f87"> 
      <html> 
       ... 
      </html> 
     </iframe> 
    </div> 
... 
</html> 

¿Es posible llamar a "algo" con el fin de conseguir elemento padre() cuando estoy con mi Javascript en <html> elemento ¿Página interior?

Respuesta

16

Sure is is. Este código funciona en FF y IE6, Opera, Chrome (requiere un servidor web y los dos archivos procedentes de mismo protocolo de dominio y el puerto)

 function getHash() { 
      var ifs = window.top.document.getElementsByTagName("iframe"); 
      for(var i = 0, len = ifs.length; i < len; i++) { 
       var f = ifs[i]; 
       var fDoc = f.contentDocument || f.contentWindow.document; 
       if(fDoc === document) { 
       alert(f.getAttribute("hash")); 
       } 
      } 
     } 
+0

El mismo requisito servidor, protocolo y puerto es para Chrome – naikus

Cuestiones relacionadas