2010-09-26 19 views
18

Ana sayfa olarak farklı bir alt etki alanından bir form içeren bir iframe açan bir greasemonkey komut dosyası var.

ben iframe formu gönderdikten sonra yeniler zaman ana sayfayı yenilemek istiyorum

Ben ne zaman iframe yenilendiğinde bir işlevi yürütmek noktada değilim, ama bu işlev üst etkileyecek alamayan belgesi.

Bu, tarayıcı güvenlik modellerinden kaynaklanıyor ve iki pencere arasında iletişim kurmak için postMessage'ı kullanarak okuyorum, ancak üst öğeye bir yeniden arama çağrısı gönderileceğini anlayamıyorum.

o

sayesindeiframe'in ana belgesi yenileme için postmessage kullanarak

çok yararlı olacağını nasıl yapılacağına ilişkin herhangi bir tavsiye

cevap

47

Kullanım:

window.parent.postMessage('Hello Parent Frame!', '*'); 

Not '*' gösterir "Herhangi köken". Mümkünse bunu hedef menşei ile değiştirmelisiniz. Ebeveyninizin çerçevede

İhtiyacınız:

window.addEventListener('message', receiveMessage, false); 

function receiveMessage(evt) 
{ 
    if (evt.origin === 'http://my.iframe.org') 
    { 
    alert("got message: "+evt.data); 
    } 
} 

iFrame'inizin kökeni ile "my.iframe.org" değiştirin. (Köken doğrulamasını atlayabilirsiniz, sadece aldığınız verilerle yaptığınız işe çok dikkat edin).

+0

IE'nin 'addEventListener' özelliğini desteklemediğini unutmayın, bu nedenle jQuery bağlama veya someting'i kullanın –

+1

Birbiriniz içinde çok sayıda iframe varsa, _parent_ yerine _top_ ile en üstteki sayfaya ulaşabilirsiniz: window.top.postMessage (' Merhaba Ana Çerçeve! ',' * '); ' –

İlgili konular