2011-11-28 10 views

Odpowiedz

17

Spróbuj tego. Zakładam, że identyfikator użytkownika iFrame to "targetFrame", a obiekt, który chcesz wywołać, to targetObject, a także jest to ta sama domena. Jeśli nie są one takie same domeny Myślę, że nie jest możliwe .:

document.getElementById('targetFrame').contentWindow.targetObject 
+4

Należy pamiętać, że musisz mieć tę samą domenę, aby uzyskać dostęp do obiektu "window" obiektu: –

4

Jeśli src iframe nie jest w tej samej domenie co pochodzenia/rodzica chcesz mieć ograniczeń

bo o takim samym origin-polityka (polityka bezpieczeństwa) https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript

Polityka planowane jest do blokowania dostępu do prywatnych danych, takich jak tokeny CSRF i innych prywatnych danych przechowywanych w ramie, na przykład jeśli zbudować stronę html z iframe z bank.com , kiedy ludzie wejdą na Twoją stronę, jeśli są zalogowani na stronie bank.com r prywatne dane będą przechowywane w elemencie iframe, z tego powodu polityka tego samego pochodzenia zablokuje różne źródła dostępu do danych innych użytkowników za pomocą elementów iframe.

2

Możesz także uzyskać dostęp do obiektów elementu iframe podrzędnego za pomocą obiektu okna rodzica.

alert(window.frames[0].variable_name); 

Pokaże wartość zmiennej nazwa_zmiennej od pierwszej iFrame. Indeks listy ramek może być używany do uzyskiwania dostępu do wartości zmiennych w różnych ramkach.

+0

Aktualizacja ES6/ES2015: działa tylko wtedy, gdy 'zmienna_nazwa' została zadeklarowana jako' zmienna nazwa_zmiennej; ', a nie jako' let nazwa_zmiennej ; '. [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let): "let", w przeciwieństwie do 'var', nie tworzy właściwości na obiekcie globalnym . " – cxw

Powiązane problemy