2009-04-14 11 views
16

Necesito que me notifiquen cada vez que un usuario hace clic en un enlace en una página de un iframe que no pertenece al mismo dominio. Soy consciente de las restricciones xss, sin embargo, todo lo que necesito saber es que la página actual se sirve en el iframe. ¿Hay alguna forma de hacerlo sin violar las reglas de xss?Obtener el src actual de un Iframe utilizando JQuery

Respuesta

8

Si no fuera por restricciones de secuencias de comandos entre sitios esto debería funcionar. Lamentablemente, no conozco una forma de obtener la URL sin violar estas restricciones.

<html> 
    <head> 
     <script type="text/javascript"> 
      function GetIFrameUrl() 
      { 
       alert('url = ' + document.frames['frame1'].location.href); 
      } 
     </script> 
    </head> 
    <body> 
     <a href="#" onclick="GetIFrameUrl();">Find the iFrame URL</a> 
     <iframe name="frame1" src="http://www.google.com" width="100%" height="400"></iframe> 
    </body> 
</html> 
+0

¿Esto XSS viloate ¿reglas? – Micah

+3

Sí, lo hace. No creo que haya una manera de hacer lo que necesita sin violar las reglas. – joshuapoehls

+2

En firefox en firebug, todo lo que obtengo es document.frames no está definido – OZZIE

32

para obtener la ubicación iframe usando jQuery:

alert($('iframeId').contents().get(0).location.href); 
+1

esto no funciona para mí – knocte

+6

esto funciona solo en el caso de un mismo dominio - la seguridad xss lo previene para diferentes dominios – Alvin

+0

Nota, si el js se está ejecutando * dentro * del iframe, seleccionar el iframe así no funcionará, pero seleccionarlo como "$ ('iframe', window.parent.document)". (Aún asumiendo el mismo dominio) – neminem

4

Usted fácilmente puede hacerlo con js vainilla.

  • Consulta el documento de un elemento con el nombre, identificación, clase o lo que sea específica
  • obtener el código fuente para el atributo de ese elemento

    //Get by Id 
    var frame_src = document.getElementById('myIframe').src 
    //Get by tag name - get the first 
    var frame_src = document.getElementsByName('frmExternal')[0].src 
    //Alert 
    alert(frame_src) 
    
0
<script type="text/javascript"> // if window open in iframe then redirect to main site 
     if(window.top.location != window.self.location) 
     { 
      alert(window.self.location); 
      // top.window.location.href = window.self.location; 
     } 
    </script> 
Cuestiones relacionadas