2013-01-21 12 views
14

window.postMessage ikinci özniteliğinde, iletimin gönderilebileceği etki alanı belirtilir. Tüm alt alanlara uygulanabilir olduğunu belirtmenin herhangi bir yolu var mı?Tüm alt etki alanlarına uygulanabilir postMessage nasıl yapılır

şeyler denedik:

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

cevap

6

Hayır, mümkün değil.

Kendinize yardımcı olabileceğiniz tek senaryo, hedef iframe'nin bilinen, sınırlı bir köken grubundan olduğunu biliyorsanız (örn. "Http://a.wordpress.com", "http: // b) .wordpress.com "ve" http://c.wordpress.com "). Bu durumda, yalnızca bir tanesi başarılı olacağından ve diğerlerinin başarısız olacağından, her bir köken için bir postMessage talebi yapın.

4

Tüm etki alan adlarını bilmeden mümkündür. Sadece bir yönlendiren URL almak ve aslında bundan kökeni olsun: Artık

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

tek şey bu özel mesajı, URL kriterlerini (wordpress.com ile biter) ve evet eğer uygun olup olmadığını kontrol izin vermektir domain.

Sadece kullanıcı iframe içinde başka bir yerde gezinene kadar çalışır: yönlendirici değiştirilir. Ancak, yönlendirme bir iframe'in localStorage içine kaydedilebilir, böylece olası etki alanlarının bir listesi vardır ve bu iletiyi her etki alanına Ivan Zuzak

+0

tarafından önerilebilir. Bu, güzel çalışır ve üst sayfanın tam URL'sini döndürür. iframe içinde herhangi bir gezinme olmadan önce değeri yakalamanız yeterlidir. – dougwig