2011-01-25 10 views
10

Mam więc stronę .jsp, która zawiera element iframe. Zawartość tego elementu iframe jest hostowana w oddzielnej domenie. Na urządzeniu mobilnym szukam tego elementu iframe, aby wykryć zmianę orientacji i odpowiednio zmienić wymiary treści.Wykrywanie zmiany orientacji z wewnątrz iframe w wielu domenach

Czy istnieje sposób na dodanie detektora zdarzeń do treści przechowywanych w tym elemencie iframe, które wykryłoby zmianę orientacji?

Jeśli ta zawartość nie znajdowała się w elemencie iframe i dostępna była bezpośrednio, wywołanie takie jak: window.addEventListener ("orientationchange", FunctionToBeCalled, false); pomyślnie przechwytuje zmianę orientacji i wywołuje odpowiednią funkcję. Jednak nie mogę sprawić, aby działało to z elementu iframe. Spróbowałem parent.addEventListener, parent.window.addEventListener, top.addEventListener, itp. Ale bez skutku.

Z tego co przeczytałem brzmi, ponieważ jest to połączenie między domenami Mam bardzo ograniczoną dostępną dla mnie funkcję rodzica, czy jestem skazany na niepowodzenie?

Każda pomoc zostanie bardzo doceniona. Dzięki!

Odpowiedz

13

Jeśli jesteś właścicielem kodu okna nadrzędnego, możesz rozwiązać ten problem za pomocą komunikatów o różnych rozmiarach. Możesz wysłać orientację z okna nadrzędnego do elementu iframe. Powinno to również działać w scenariuszu między domenami. Testowałem to na iPhone 4.3 i Android 2.2.

W oknie dominującej: zarejestrować się do zmian orientacji i przeniesienia go do iframe

window.addEventListener("orientationchange", function(){ 
       var iframe = document.getElementById("youriframe").contentWindow; 
       iframe.postMessage({ 
        orientation: window.orientation 
       }, 'http://the.domain.of.the.iframe.com'); 
}, false) 

w iframe: zapisać się do zmian orientacji od rodzica

window.addEventListener("message", function(e){ 
      var newOrientationValue = e.data.orientation; 
      alert(newOrientationValue); // <--- DO your own logic HERE 
}, false) 

to sprawdzić więcej szczegółów : http://html5demos.com/postmessage2

Powiązane problemy