Nasıl pencere kullanıyorsunuz.etki alanları arasında postMessage?
window.postMessage nokta çerçeveler farklı alanlarda barındırılan/windows arasında güvenli iletişimi sağlamak için gibi görünüyor, ama aslında etmiyorizin verKrom.
Senaryo şöyle:
- Embed <iframe> (etki alanı
src
a B ile*) Bir etki alanı üzerinde bir sayfa - &; İframe> çoğunlukla bir varlık biter <script> sonunda yürütme tag,... lt
- Pencere diyorum.( . postMessage ^em>some_data,page_on_A)
≪iframe> kesinlikle bağlamında etki alanı B, ve ettim doğrulayan gömülü javascript <iframe> yürütür düzgün ve aramalar postMessage
ile doğru değerler.
Chrome bu hata mesajı alıyorum:
Mesaj göndermek için açılamıyorBir. Alıcı aslına vardırB.
İşte bir mesaj: sayfa olay dinleyicisini kaydeden kod
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Ayrıca window.postMessage(some_data, '*')
, ama yaptığı tek şey, hatayı bastırmak aradım.
Sadece bir noktayı kaçırıyorum, pencere.(...) bu postMessage için bir anlamı yok mu? Ya da sadece korkunç yanlış yapıyorum?
CEVAP
Burada Krom 5.0.375.125 üzerinde çalışan bir örnek.
Sayfa B (iframe içeriği):
<html>
<head></head>
<body>
<script>
top.postMessage('hello', 'A');
</script>
</body>
</html>
top.postMessage
parent.postMessage
window.postMessage
buraya not
Sayfa:
<html>
<head></head>
<body>
<iframe src="B"></iframe>
<script>
window.addEventListener( "message",
function (e) {
if(e.origin !== 'B'){ return; }
alert(e.data);
},
false);
</script>
</body>
</html>
A ve B http://domain.com
gibi bir şey olsa gerek
DÜZENLEME:
another question, .. etki alanları(A ve B) postMessage
/
düzgün çalışması için olması gerekir.
Alt etki alanları arasında PHP Oturuml...
Nasıl özel yöntemleri, alanları veya i...
Nasıl dosya adları iki iptalleri arası...
Nasıl C kaynak dosyaları arasında pay ...
Sekmeler arasında geçiş yapmak için na...