SORU
11 AĞUSTOS 2010, ÇARŞAMBA


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:

  1. Embed <iframe> (etki alanı src a B ile*) Bir etki alanı üzerinde bir sayfa
  2. &; İframe> çoğunlukla bir varlık biter <script> sonunda yürütme tag,... lt
  3. 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?

*- Mıme tipi kalmalı/html, metin.

CEVAP
11 AĞUSTOS 2010, ÇARŞAMBA


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrea Lewis

    Andrea Lewis

    14 Mart 2013
  • hidetake takayama

    hidetake tak

    3 Mart 2009
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011