2013-01-21 11 views
14

W drugim atrybucie określa się domenę, do której można wysłać moją wiadomość. Czy jest jakiś sposób na określenie, czy ma on zastosowanie do wszystkich subdomen.Jak ustawić postMessage w odniesieniu do wszystkich subdomen?

Co próbowałem:

iframe.contentWindow.postMessage('The message to send.','http://*.wordpress.com'); 
iframe.contentWindow.postMessage('The message to send.','http://wordpress.com'); 

Odpowiedz

6

Nie, nie jest możliwe.

Jedynym scenariuszem, w którym możesz sobie pomóc, jest to, że wiesz, że docelowy element iframe pochodzi ze znanego, skończonego zestawu źródeł (np. "Http://a.wordpress.com", "http: // b .wordpress.com "i" http://c.wordpress.com "). W takim przypadku wystarczy wysłać żądanie postMessage dla każdego źródła, ponieważ tylko jeden z nich się powiedzie, a pozostałe zawiedzie.

4

Jest to możliwe bez znajomości wszystkich nazw domen. Po prostu adres URL stron odsyłających i rzeczywiście dostać pochodzenie od tego:

var parentOrigin = document.referrer.match(/^.+:\/\/[^\/]+/)[0]; 

Teraz jedyną rzeczą jest to, aby sprawdzić, czy adres URL pasuje kryteria (kończy wordpress.com), a jeśli tak, to umożliwić wiadomość do tego specyficznego domena.

Działa tylko do momentu, w którym użytkownik nawiguje wewnątrz elementu iframe w innym miejscu: strona odsyłająca została zmieniona. Jednak można go zapisać w elemencie iframe localStorage, więc masz listę możliwych domen i możesz wysłać wiadomość do każdej domeny z listy proponowanej przez Ivan Zuzak

+0

To działa ładnie i zwraca pełny adres URL strony nadrzędnej, po prostu chwyć tę wartość, zanim pojawi się jakaś nawigacja wewnątrz elementu iframe. – dougwig

Powiązane problemy