2009-02-14 11 views
12

Ten jQuery zwróci adres źródłowy ramki:Pobierz źródło ramki z jQuery (po źródło został zmieniony)

$('#frame-name').attr('src') 

Ale jeśli link wewnątrz ramki zostanie kliknięty, pierwotnym źródłem jest wciąż zwrócony.

Czy można wykryć nowy źródłowy adres URL? Lub uzyskać źródło nowego dokumentu załadowanego do ramki? Jeśli jedno z nich jest twierdzące, czy istnieją ograniczenia bezpieczeństwa, jeśli ramka źródłowa zawiera adres URL z innej domeny?

Odpowiedz

5
parent.frames[1].location.href; 

Nie jQuery, ale czego szukałem. Jednak kopie błędu zabezpieczeń, jeśli źródło znajduje się w innej domenie.

1

AFAIK nie ma dobrego sposobu, aby to zrobić z jQuery. Musisz użyć location.href na elemencie HTML, więc jeśli otrzymasz element z jQuery, możesz to zrobić.

$("#iframe-name").get(0).location.href 
+1

$ ("# iframe-name"). Get (0) .location.href jest niezdefiniowany –

+0

Czy robisz to z ramki nadrzędnej? Sprawdź, czy selektor faktycznie zwraca wartość HTMLElement. alert ($ ("# iframe-name"). Get (0)); –

+5

try $ ("# iframe-name"). Get (0) .contentWindow.location.href –

1

Czy link pochodzi z innej domeny? Przeglądarki mogą ograniczać dostęp do wszelkich informacji o tym, co użytkownik otworzył w innych oknach lub ramkach, jeśli jest na innej stronie, jako środek bezpieczeństwa.

2

Jako rozszerzenie przeglądarki, błędy bezpieczeństwa znikną.

Na przykład Greasemonkey to rozszerzenie przeglądarki Firefox, które można eksplorować, a jeśli podoba Ci się skrypt, który tworzysz, może on zostać spakowany w swoje własne rozszerzenie.

Można również wprowadzić skrypt do strony jako bookmarklet.