2009-04-14 18 views
16

Potrzebuję otrzymywać powiadomienia za każdym razem, gdy użytkownik kliknie łącze na stronie w elemencie iframe, który nie pochodzi z tej samej domeny. Jestem świadomy ograniczeń xss, jednak wszystko, co muszę wiedzieć, to aktualna strona wyświetlana w elemencie iframe. Czy istnieje sposób, aby to zrobić bez naruszania zasad xss?Uzyskiwanie bieżącego src elementu iframe za pomocą JQuery

Odpowiedz

8

Jeśli nie dla ograniczeń skryptów cross-site to powinno działać. Niestety nie wiem, jak uzyskać adres URL bez naruszania tych ograniczeń.

<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

Czy ten viloate XSS zasady? – Micah

+3

Tak, robi. Nie wierzę, że istnieje sposób na zrobienie tego, czego potrzebujesz, bez naruszania zasad. – joshuapoehls

+2

W firefox w firebug wszystko co dostaję to document.frames jest undefined – OZZIE

32

Aby uzyskać lokalizację iframe przy użyciu jQuery:

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

to nie działa dla mnie – knocte

+6

działa to tylko w przypadku tej samej domeny - ochrona xss uniemożliwia jej dla różnych domen – Alvin

+0

Uwaga, jeśli js działa * wewnątrz * elementu iframe, wybór takiego elementu iframe nie zadziała, ale wybranie go "$ (" iframe ", window.parent.document)" robi. (Wciąż zakładając tę ​​samą domenę.) – neminem

4

można łatwo zrobić z js wanilii.

  • Zapytanie dokument dla elementu z nazwą, id, klasy lub cokolwiek
  • Pobierz źródło atrybutu dla tego elementu

    //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> 
Powiązane problemy