2009-04-14 4 views
16

Ho bisogno di ricevere una notifica ogni volta che un utente fa clic su un link su una pagina in un iframe che non appartiene allo stesso dominio. Sono a conoscenza delle restrizioni xss, tuttavia tutto ciò che devo sapere è che la pagina corrente viene pubblicata nell'Iframe. C'è un modo per farlo senza violare le regole xss?Ottenere l'attuale src di un Iframe usando JQuery

risposta

8

In caso contrario, le restrizioni di cross-site scripting dovrebbero funzionare. Purtroppo non conosco un modo per ottenere l'URL senza violare queste restrizioni.

<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

Fa questo viloate XSS regole? – Micah

+3

Sì, lo fa. Non credo che ci sia un modo per fare ciò di cui hai bisogno senza violare le regole. – joshuapoehls

+2

In firefox in firebug tutto ciò che ottengo è document.frames non definito – OZZIE

32

per ottenere la posizione iframe utilizzando jQuery:

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

questo non funziona per me – knocte

+6

questo funziona solo nel caso di uno stesso dominio - xss sicurezza lo impedisce per domini diversi – Alvin

+0

Nota, se js è in esecuzione * dentro * l'iframe, selezionando l'iframe come quello non funzionerà, ma selezionandolo come "$ ('iframe', window.parent.document)" lo fa. (Assumendo ancora lo stesso dominio.) – neminem

4

potete facilmente può fare con js vaniglia.

  • Query il documento per un elemento con il nome specifico, id, classe o qualunque
  • Ottenere la fonte per attributo per quell'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>