2015-01-29 12 views
5

"tanımsız bir işlev değil" hatası üretir. Ancak MDN tarihinde example code verilen kesin sözdizimi kullanarak, güzel bir Undefined is not a function hata ile takdim ediliyorum. Böyle JavaScript içindeki iframe başlatılıyor ve benim sayfaya ekleme gibi çeşitli şeyleri, denedim ama aynı hata ile beni bıraktı. için aynı benim iframe seçmek için ayrı seçiciler var.postMessage() Ben bir iframe ve benim ana web sitesi arasında iletişim kurmak için çalışmaya <code>postMessage()</code> almaya çalışıyorum

Aşağıdaki JavaScript kodu vardır:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.editor').postMessage("A", "domain here"); 
    }); 

    function receiveMessage(event) 
    { 
     if (event.origin !== "domain here") 
      return; 

     // Do something 
    } 

    window.addEventListener("message", receiveMessage, false); 
</script> 
komut yukarıdaki benziyor sayfasında benim iframe, bir mesaj göndermeyi dener

: Daha sonra bir işlevi vardır

<iframe src="domain here/frameListener.html" class="editor"></iframe> 

receiveMessage herhangi bir mesaj yakalamak için ana web sayfasına bir yanıt olarak göndermek ediliyor. Son olarak, ben this question verilen cevaplar denedim: Ama bu benim sorunu çözmek vermedi. Bu nedenle bir kopyası olmaması gerekir.

Nasıl bu hata mesajının kurtulabilirim?

$('.editor').get(0).contentWindow.postMessage("A", "domain here"); 

Ayrıca, iframe ait contentWindow özelliğine erişmek gerekir: Eğer gerçek window DOM öğesine almak gerekir ve bu konuda diyoruz böylece

+1

'postMessage'' $ ('editörü') ise, 'Window' nesnesinin bir yöntemdir' – hindmost

+0

@hindmost sayesinde, Jivings cevapta verilen örneğe kodumu değiştirdik bir jQuery nesnesidir, Ancak benim sorunu gidermek vermedi. Javascript yöntemlerini kullanmak isterseniz –

cevap

5

postMessage bir jQuery işlevi değildir. Burada MDN dokümanlar bir alıntı:

otherWindow.postMessage(message, targetOrigin, [transfer]); 

otherWindow

başka bir pencereye bir başvuru; Bu tür bir referans iframe elemanının contentWindow özelliğini kullanarak, örneğin, elde edilebilir, nesne window.open tarafından döndürülen veya ile belirtilen veya window.frames üzerinde göstergesi sayısal.

+0

Yani, hiç 'JQuery' kullanarak bir öğe seçemiyorum? Yani topal: cevaplanması için/teşekkürler! test edip cevabınızı kabul edecek. –

+0

Ben maalesef sizin örnek için kodumu değiştirdikten sonra aynı hata mesajı ile bırakıldım. –

+0

@KevinVoorn güncellendi. Sen hile yaptılar 'contentWindow' mülkiyet – Jivings

İlgili konular